class Solution:
def numDecodings(self, s):
"""
:type s: str
:rtype: int
"""
# 动态规划dp[i]表示s第i个数时decode方式
if s == "":
return 0
dp = [0 for _ in range(len(s)+1)]
dp[0] = 1
for i in range(1, len(s)+1):
if s[i-1] != "0": # 最后一位有效
dp[i] += dp[i-1]
if i != 1 and "09" < s[i-2:i] < "27": # 最后两位有效
dp[i] += dp[i-2]
return dp[-1]