剑指Offer【把数字翻译成字符串】
题目描述
给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 “a” ,1 翻译成 “b”,……,11 翻译成 “l”,……,25 翻译成 “z”。一个数字可能有多个翻译。请编程实现一个函数,用来计算一个数字有多少种不同的翻译方法。
示例 1:
1 |
|
提示:
0 <= num < 2^31
解法
动态规划
dp[i]
表示为从0-i
能翻译的种类数- 可以
i
单独作为一位来翻译,此时最后一位肯定是固定的只有一种,那么种类数在dp[i-1]
就确定了 - 如果第
i−1
位和第i
位组成的数字在10到25之间,可以把这两位连起来翻译,同类种类数在dp[i-2]
就固定了 - 动态转移方程为:
1 |
|
- 时间复杂度:O(n)
来源:力扣(LeetCode)
链接:剑指 Offer 46. 把数字翻译成字符串 - 力扣(LeetCode)
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 漫漫长夜!