DP注意判断即可
class Solution(object):
def numDecodings(self, s):
"""
:type s: str
:rtype: int
"""
ls = len(s)
if ls==0:
return 0
else:
if s[0] == '0':
return 0
dp=[0]*(ls+1)
dp[0]=1
dp[1]=1
for i in range(1,ls):
if s[i]=='0':
if s[i-1]!='1' and s[i-1]!='2':
return 0
else:
dp[i+1]=dp[i-1]
else:
if 10<int(s[i-1:i+1])<=26:
dp[i+1]=dp[i]+dp[i-1]
else:
dp[i+1]=dp[i]
return dp[ls]