给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 “a” ,1 翻译成 “b”,……,11 翻译成 “l”,……,25 翻译成 “z”。一个数字可能有多个翻译。请编程实现一个函数,用来计算一个数字有多少种不同的翻译方法。
示例 1:
输入: 12258
输出: 5
解释: 12258有5种不同的翻译,分别是"bccfi", "bwfi", "bczi", "mcfi"和"mzi"
解法1: 递归
class Solution:
# 解法1: 递归
def translateNum(self, num: int) -> int:
if num <= 9:
return 1 # 返回的 情况数
temp = num % 100 # 取 两位余数;
if temp > 9 and temp < 26:
# 分两种情况,/10: 去掉1位, /100: 去掉两位, 两种情况数量 相加
return self.translateNum(num // 10) + self.translateNum(num // 100)
else:
# 一种情况,
return self.translateNum(num // 10)
解法2: 动态规划方法:
?
本文探讨了将数字翻译成字符串的问题,通过特定规则将数字0-25映射到字母a-z,介绍了解决这一问题的递归解法和动态规划方法。以示例12258为例,展示了5种不同的翻译方式。

447

被折叠的 条评论
为什么被折叠?



