1.题目

【LeetCode】91.解码方法_leetcode

2.分析

简单的dp题了。不过需要仔细分析好情况,弄清楚什么条件有值即可。否则的话,很容易在一些测试样例中翻车。

3.代码

class Solution:
def numDecodings(self, s: str) -> int:
if s[0] == '0':
return 0
dp = [0] * (len(s)+1) # 表示第i位可能的构造数
dp[0] = 1 #
dp[-1] = 1
for i in range(1,len(s)):
if s[i]!='0':
dp[i] = dp[i-1]
if i>=1 and 1 <= int(s[i-1]+s[i],10) <=26 and s[i-1]!='0':
dp[i] += dp[i-2]
else:
if 1 <= int(s[i-1]+s[i],10) <=26 and s[i-1]!='0':
dp[i] = dp[i-2]
else:
return 0
print(dp)
return dp[len(s)-1]