var numDecodings = function(s) {
var n = s.length
// dp[i][0]代表着到达下标i时候并且末尾数字是两位数的情况s可以拆成多少个 满足要求的数字的组合
// dp[i][1]代表着到达下标i时候并且末尾数字是1位数的情况s可以拆成多少个 满足要求的数字的组合
var dp = new Array(n)
for(let i=0;i<n;i++){
dp[i] = new Array(2)
}
dp[0][0] = 0
if(s[0]>0){
dp[0][1] = 1
}else{
dp[0][1] = 0
}
for(let i =1;i<n;i++){
if(s[i]!=0){
dp[i][1] = dp[i-1][0]+dp[i-1][1]
if(0<s.slice(i-1,i+1)&&s.slice(i-1,i+1)<27){
dp[i][0]=dp[i-1][1]
}else{
dp[i][0] = 0
}
}else{
dp[i][1] = 0
if(0<s.slice(i-1,i+1)&&s.slice(i-1,i+1)<27){
dp[i][0] = dp[i-1][1]
}else{
dp[i][0] = 0
}
}
}
return dp[n-1][0]+dp[n-1][1]
};
Leecode 91. 解码方法
最新推荐文章于 2024-06-01 18:05:44 发布