有一种将字母编码成数字的方式:'a'->1, 'b->2', ... , 'z->26'。
现在给一串数字,返回有多少种可能的译码结果
数据范围:字符串长度满足
进阶:空间复杂度
,时间复杂度
有一种将字母编码成数字的方式:'a'->1, 'b->2', ... , 'z->26'。
"12"
2
2种可能的译码结果(”ab” 或”l”)
"31717126241541717"
192
192种可能的译码结果
/**
* 解码
* @param nums string字符串 数字串
* @return int整型
*/
function solve(nums) {
let dp = new Array(nums.length + 1);
dp[0] = 1;
for (let i = 1; i <= nums.length; i++) {
dp[i] = nums[i - 1] == '0' ? 0 : dp[i - 1];
if ((i > 1) && ((nums[i - 2] == '1') || (nums[i - 2] == '2' && nums[i - 1] <= '6'))) {
dp[i] += dp[i - 2];
}
}
return dp[nums.length];
}
module.exports = {
solve: solve
};