JesseZhao1990/algorithm

解码方法

JesseZhao1990 opened this issue · 0 comments

image

/**
 * @param {string} s
 * @return {number}
 */
var numDecodings = function(s) {
    if(s==="0") return 0;
    var memo = {};
    var length = s.length;
    var arr = s.split("");
 
    memo[1] = 1;
    if(length===1){
        return 1;
    }
    
    if(arr[0]==="0"){
        return 0;        
    }else if(arr[0]==="1"){
        if(arr[1]==="0"){
            memo[2] =1
        }else{
            memo[2] = 2
        } 
    }else if(arr[0]==="2"){
        if(arr[1]==="0"){
            memo[2]=1;
        }else if(arr[1]<="6"){
            memo[2]=2;
        }else{
            memo[2]=1;
        }
    }else {
        if(arr[1] ==="0"){
            return 0;
        }else{
            memo[2] =1;
        }
    }
    
    for(var i=3;i<=length;i++){
        if(arr[i-2]==="0"){
            if(arr[i-1] ==="0"){
                return 0;
            }else{
                memo[i] = memo[i-1]
            }
        }else if(arr[i-2]==="1"){
            if(arr[i-1]==="0"){
                memo[i] = memo[i-2];
            }else{
                memo[i] = memo[i-1] + memo[i-2];
            }
        }else if(arr[i-2]==="2"){
            if(arr[i-1]==="0"){
                memo[i] = memo[i-2]
            }else if(arr[i-1]<="6"){
                memo[i] = memo[i-1]+ memo[i-2];
            }else{
                console.log(memo[i-1]);
                memo[i] = memo[i-1];
            }
        }else{
            if(arr[i-1]==="0"){
                return 0;
            }else{
                memo[i] = memo[i-1];
            }
        }
    }
    return memo[length];
    
};

leetcode原题地址:https://leetcode-cn.com/problems/decode-ways/description/