Leetcode:面试46. 把数字翻译成字符串

 

 

 

 

 

思路 斐波那契的变形

设置该数字一样长度的数组,每个位置对应以该数字结尾 有多少种翻译方法。

 

注意点:

1、第一个和 第二个数字 单独处理

2、当前数字,与前一个数字是否能组成<25 ?

例 : 512,可分为 5 1 2 和 5 12  ,而506 只能分为 5 0 6

class Solution:
    def translateNum(self, num: int) -> int:
        nums = str(num)
        t= [0]*(len(nums))
        for i in range(len(nums)):
            if i==0:
                t[i] = 1
                continue
            s = 10*int(nums[i-1])+int(nums[i])
            if i==1:
                if s<=25:
                    t[i] = 2
                else:
                    t[i] = t[i-2]+t[i-1]
                continue
            
            if s <=25 and s!=int(nums[i]):
                t[i] = t[i-2]+t[i-1]
            else:
                t[i] = t[i-1]
        # print(t)
        return t[len(nums)-1]

  

posted @ 2020-06-10 17:15  SuckChen  阅读(144)  评论(0编辑  收藏  举报