问题
给定一个数字,我们按照如下规则把它翻译为字符串: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]】栈、递归
推荐阅读
- 数据结构与算法|【算法】力扣第 266场周赛
- leetcode|今天开始记录自己的力扣之路
- Python|Python 每日一练 二分查找 搜索旋转排序数组 详解
- 【LeetCode】28.实现strstr() (KMP超详细讲解,sunday解法等五种方法,java实现)
- LeetCode-35-搜索插入位置-C语言
- leetcode python28.实现strStr()35. 搜索插入位置
- Leetcode Permutation I & II
- python|leetcode Longest Substring with At Most Two Distinct Characters 滑动窗口法
- LeetCode 28 Implement strStr() (C,C++,Java,Python)
- Python|Python Leetcode(665.非递减数列)