有一种将字母编码成数字的方式:'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 };