91. Decode Ways
没想到这题用backtrack
会TLE,毕竟题目也没给数据规模,以为要求不会很高。
能做backtrack
的题目普遍也都可以bottom-up DP
,这题里s[1:n+1]
的解法方法总数dp[n]
需要靠dp[n-2], dp[n-1]
得出。即如果s[n-2:n]
是个10到26之间的数,就可以把dp[n-2]
数量也加入dp[n]
的数量。
class Solution:
def numDecodings(self, s: str) -> int:
self.count = 0
self.backtrack(s, 0)
return self.count
def backtrack(self, s, idx):
if idx == len(s):
self.count += 1
return
if s[idx] != "0":
self.backtrack(s, idx+1)
if idx <= len(s)-2 and int(s[idx]+s[idx+1]) <= 26:
self.backtrack(s, idx+2)
return count
Last updated
Was this helpful?