字符a-z, A-Z可以编码为1-26。"A"->"1", "a"->"1", "B"->"2", "b"->"2", "Z"->"26", "z"->"26" 现在输入一个数字序列,计算有多少种方式

Python 实现

'''
字符a-z, A-Z可以编码为1-26。"A"->"1", "a"->"1", "B"->"2", "b"->"2", "Z"->"26", "z"->"26"
现在输入一个数字序列,计算有多少种方式可以解码成字符a-zA-Z组成的序列。
例如:
输入:19
输出:6 
(ai, Ai, aI, AI, s, S)
输入:268
输出:12
输入:219
输出:16
'''

def how_many_ways(digitarray):
    # implement here
    digitarray=str(digitarray)
    dp_list = [0] * (len(digitarray) + 1)
    dp_list[0] = 1
    for i in range(1, len(dp_list)):
        if digitarray[i - 1] != '0':
            dp_list[i] = dp_list[i - 1]*2
        if i != 1 and '09' < digitarray[i - 2:i] < '27':
            dp_list[i] += dp_list[i - 2]*2
        print(dp_list)
    print(dp_list[-1])
how_many_ways(219)   # 结果16

你可能感兴趣的:(python,python,动态规划)