思路 斐波那契的变形
设置该数字一样长度的数组,每个位置对应以该数字结尾 有多少种翻译方法。
注意点:
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]