笔试题

原创
2019/12/25 09:04
阅读数 158
'''
字符A-Z可以编码为1-26。"A"->"1", "Z"->"26"
现在输入一个数字序列,计算有多少种方式可以解码成字符A-Z组成的序列。
例如:
(1)输入:19
   输出:2
(2)输入:268
   输出:2
(3)输入:219
   输出:3
'''
def how_many_ways(digitarray):
    # implement here
    # 如果数字是以0开头的
    digitarray = (str(digitarray)).lstrip('0')
    s_len = len(digitarray)
    if s_len == 0:
        return 0
    li = list(range(s_len + 1))
    li[0] = 1
    print(li)
    for i in range(s_len + 1):
        if i == 0:
            continue
        if digitarray[i - 1] == '0':
            li[i] = 1
        else:
            li[i] = li[i - 1]
        if (i > 1 and int(digitarray[i - 1]) <= 6 and int(digitarray[i - 2]) == 2) or (
                i > 1 and int(digitarray[i - 2]) == 1):
            li[i] += li[i - 2]
    print(li)
    return li[s_len]


print(how_many_ways(19))

 

 

展开阅读全文
加载中

作者的其它热门文章

打赏
0
0 收藏
分享
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部