题解 | #把数字翻译成字符串#

把数字翻译成字符串

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

我就不明白了 怎么就不行了呢? 爬个楼梯嘛

 /**
 * 解码
 * @param nums string字符串 数字串
 * @return int整型
 */
// function solve( nums ) {
//     // write code here
//     let a=1
//     let b=1 
//     for(let i=2;i<=nums.length;i++){
//         let canDivide=nums.slice(i-2,i) 
//         let c 
//         if(canDivide>10&&canDivide<=25){
//             c=a+b
//         }else{
//            c=a  
//         }
//         b=a
//         a=c    
//     }
//     return a 
// }
/**
 * 解码
 * @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
};

全部评论
twoN只要出现00或者30、40这种特殊情况就会卡住无法译码,直接break 返回0
点赞 回复 分享
发布于 2023-10-25 14:33 天津

相关推荐

积极的小学生不要香菜:你才沟通多少,没500不要说难
点赞 评论 收藏
分享
06-08 22:25
门头沟学院 Java
从零开始的转码生活:这hr不会打开手机不分青红皂白给所有人群发这句话,过一会再给所有人再发一遍,这肯定会有重复的,不管,再过一会再发一遍
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务