题解 | #把数字翻译成字符串-注释很详细#

把数字翻译成字符串

http://www.nowcoder.com/practice/046a55e6cd274cffb88fc32dba695668

/**
 * 解码
 * @param nums string字符串 数字串
 * @return int整型
 */
function solve( nums ) {
    // write code here
    let len = nums.length;
    let dp = new Array(len);//dp[i]表示在 当前i位置上有多少种译码的可能。
    dp[0] = 1;
    for(let i = 1;i<len;i++){
        let twoN = parseInt(nums.slice(i-1,i+1));
    if(i === len - 1 && nums[i] == 0 && twoN > 26){
        dp[i] = 0;   
    }else if(nums[i] == 0 || twoN > 26 || nums[i-1] == 0){
            dp[i] = dp[i-1];
        }else{
            dp[i] = i>= 2 ? dp[i-1] + dp[i-2] : dp[i-1] + 1;
        }
    }
    return dp[len - 1];
    
}
module.exports = {
    solve : solve
};
全部评论
你这样部分用例通过不了 下面为 AC 版 /** * 解码 * @param nums string字符串 数字串 * @return int整型 */ function solve(nums) { // write code here const len = nums.length; const dp = new Array(len); //dp[i]表示在 当前i位置上有多少种译码的可能。 dp[0] = 1; if (nums == 0) return 0; for (let i = 1; i < len; i++) { const twoN = parseInt(nums.slice(i - 1, i + 1)); if (i === len - 1 && nums[i] == 0 && (twoN > 26 || twoN == 0)) { dp[i] = 0; } else if (nums[i] == 0 || twoN > 26 || nums[i - 1] == 0) { dp[i] = dp[i - 1]; } else { dp[i] = i >= 2 ? dp[i - 1] + dp[i - 2] : dp[i - 1] + 1; } } return dp[len - 1]; } module.exports = { solve: solve, };
点赞 回复 分享
发布于 2023-09-18 21:54 北京

相关推荐

CVTE校招内推:可以试试我们这,硬件还没招满
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
正在热议
更多
牛客网
牛客企业服务