题目描述
给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 “a” ,1 翻译成 “b”,……,11 翻译成 “l”,……,25 翻译成 “z”。一个数字可能有多个翻译。请编程实现一个函数,用来计算一个数字有多少种不同的翻译方法。
解题思路
动态规划
转移方程dp[i] = dp[i - 1] + dp[i - 2](if [i-2][i-1]所组成的两位数在10-25之间)
代码
/**
* @param {number} num
* @return {number}
*/
// 转移方程dp[i] = dp[i - 1] + dp[i - 2](if [i-2][i-1]所组成的两位数在10-25之间)
var translateNum = function(num) {
let s = num + '';
let dp = [];
dp[0] = 1;
for(let i = 1; i < s.length; ++i) {
dp[i] = dp[i - 1];
if ((parseInt(s[i]) + parseInt(s[i - 1]) * 10) < 26 && (parseInt(s[i]) + parseInt(s[i - 1]) * 10) > 9) {
if(i === 1) {
dp[i]++;
} else {
dp[i] += dp[i - 2];
}
}
}
return dp[s.length - 1];
};
作者:zijiezh
链接:https://leetcode-cn.com/problems/ba-shu-zi-fan-yi-cheng-zi-fu-chuan-lcof/solution/dong-tai-gui-hua-by-zijiezh-2/
来源:力扣(LeetCode)