LeetCode 46. 把数字翻译成字符串 [Python]

问题
给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 “a” ,1 翻译成 “b”,……,11 翻译成 “l”,……,25 翻译成 “z”。一个数字可能有多个翻译。请编程实现一个函数,用来计算一个数字有多少种不同的翻译方法。
示例 1:

输入: 12258
输出: 5
解释: 12258有5种不同的翻译,分别是"bccfi", “bwfi”, “bczi”, “mcfi"和"mzi”
思路
运用递归知识求解。
(1)首先获取数字,判断数字字符串的长度,按照字符串的顺序依次判断,好比第一个数字进栈,然后依次有数字进栈。其中,有两种判定结果:长度为1,长度为2且数字小于等于25。当满足条件时计数count++,直到所有判断都结束。
(2) 要注意“int(a2[0]) != 0” 长度为2时,第一个数字不能使0.
代码
class Solution: def translateNum(self, num): self.count = 0 self.num = str(num) self.fun(self.num) return self.countdef fun(self, num): if len(num) >= 1: #长度大于1 a1 = num[0] b1 = num[1:] if len(num[1:]) >= 2: self.fun(b1) else: self.count += 1if len(num) >= 2: #长度大于2 a2 = num[0:2] b2 = num[2:] if (int(a2) <= 25) & (int(a2[0]) != 0): if len(num[2:]) >=2: self.fun(b2) else: self.count += 1if __name__ == '__main__': s = Solution() r = s.translateNum(11345) print(r)

相关知识
【LeetCode 46. 把数字翻译成字符串 [Python]】栈、递归

    推荐阅读