题目描述
给定一个数字,我们按照如下规则把它翻译为字符串:0翻译成a ,1翻译成b,……,11翻译成l,……,25翻译成z。一个数字可能有多个翻译。请编程实现一个函数,用来计算一个数字有多少种不同的翻译方法。
示例1:
1 | 输入: 12258 |
提示:0 <= num < 2^31
思路
动态规划,流程题解如下:

转移方程:dp[i] = dp[i -1] + dp[i -2] ,10*x(i-1) + x(i) ∈[10,25]dp[i] = dp[i -1] ,10*x(i-1) + x(i) ∈[0,10)∪(25,99]
初始状态:dp[0] = dp[1] = 1
流程:
- 将数字
num转化成字符串s,遍历字符串s实现动态规划 - 字符串切片
s[i-2,i],获取组合10*x(i-1) + x(i),通过字符串比较判断所属区间 - 用
a,b分别记录dp[i],dp[i-1]
代码
1 | class Solution{ |
思路参考大佬
作者:jyd
链接:https://leetcode-cn.com/problems/ba-shu-zi-fan-yi-cheng-zi-fu-chuan-lcof/solution/mian-shi-ti-46-ba-shu-zi-fan-yi-cheng-zi-fu-chua-6/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/ba-shu-zi-fan-yi-cheng-zi-fu-chuan-lcof
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。