解码方法
JesseZhao1990 opened this issue · 0 comments
JesseZhao1990 commented
/**
* @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/
