def numDecoding(s):
"""
一条包含字母 A-Z 的消息通过以下映射进行了 编码 :
'A' -> "1"
'B' -> "2"
...
'Z' -> "26"
要 解码 已编码的消息,所有数字必须基于上述映射的方法,反向映射回字母(可能有多种方法)。
例如,"11106" 可以映射为:
"AAJF" ,将消息分组为 (1 1 10 6)
"KJF" ,将消息分组为 (11 10 6)
:param s:
:return:
"""
len_s = len(s)
dp = [0]*(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>0 and ((s[i-2] == '1') or (s[i-2] == '2' and '0' <= s[i-1] <= '6')):
dp[i] += dp[i-2]
return dp
s = '12034'
print(numDecoding(s))