剑指 Offer 46. 把数字翻译成字符串
题目描述
给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 “a” ,1 翻译成 “b”,……,11 翻译成 “l”,……,25 翻译成 “z”。一个数字可能有多个翻译。请编程实现一个函数,用来计算一个数字有多少种不同的翻译方法
动态规划:
class Solution:
def translateNum(self, num: int) -> int:
s = str(num)
# a = f[0], b = f[1]
a = b = 1
for i in range(2, len(s) + 1):
# f[n] = f[n - 1], f[n + 1] = f[n] or f[n] + f[n - 1]
a, b = b, (a + b if '10' <= s[i - 2: i] <= '25' else b)
return b
节省存储空间,从后往前遍历:
class Solution:
def translateNum(self, num: int) -> int:
a = b = 1
y = num % 10
while num:
num //= 10
x = num % 10
b, a = a, a + b if 10 <= (10 * x + y) <= 25 else a
y = x
return a
该博客探讨了一种使用动态规划方法解决将数字翻译成特定字符串的问题。代码示例展示了如何从后往前遍历数字,计算不同翻译方法的数量。动态规划在这里用于优化存储空间,减少不必要的计算。
238

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



