var checkOne = function(s) {
if (s === '*') {
return 9;
} else if (s === '0') {
return 0;
}
return 1;
};
var checkTwo = function(s) {
if (s[0] === '0') {
return 0;
} else if (s === '**') {
return 15;
} else if ((s[0] = '*' && s[1] !== '*')) {
const lastNum = parseInt(s[1], 10);
return lastNum > 6 ? 1 : 2;
} else if (s[0] !== '*' && s[1] === '*') {
const firstNum = parseInt(s[0], 10);
if (firstNum > 2) return 0;
if (firstNum === 1) return 9;
return 6;
}
const num = parseInt(s, 10);
return (num > 26 || num === 0) ? 0 : 1;
}
/**
* @param {string} s
* @return {number}
*/
var numDecodings = function(s) {
const len = s.length;
const dp = new Array(len).fill(0);
for (let i = 0; i < len; i++) {
if (i === 0) {
dp[i] = checkOne(s[i]);
} else if (i === 1) {
dp[i] = dp[i - 1] * checkOne(s[i]) + checkTwo(s.substring(i - 1, i + 1));
} else {
dp[i] = dp[i - 1] * checkOne(s[i]) + dp[i - 2] * checkTwo(s.substring(i - 1, i + 1));
}
}
return dp[len - 1];
};
// console.log(numDecodings('2*'))
console.log(numDecodings('10'))
console