SOURCE

/**
 * @param {string} s
 * @return {number}
 */
var numDecodings = function(s) {
    const len = s.length;
    if (len === 1) {
        if (s === '*') {
            return 9;
        } else if (s === '0') {
            return 0;
        }
        return 1;
    }
    if (len === 2) {
        const basic = numDecodings(s[0]) * numDecodings(s[1]);
        console.log(basic, s, '111');
        if (s[0] === '0') {
            console.log('aaa');
            return 0;
        } else if (s === '**') {
            console.log('bbb');
            return basic + 15;
        } else if ((s[0] = '*' && s[1] !== '*')) {
            console.log('ccc');
            const lastNum = parseInt(s[1], 10);
            return lastNum > 6 ? basic + 1 : basic + 2;
        } else if (s[0] !== '*' && s[1] === '*') {
            console.log('ddd');
            const firstNum = parseInt(s[0], 10);
            if (firstNum > 2) return basic;
            if (firstNum === 1) return basic + 9;
            return basic + 6;
        }
        console.log('----');
        const num = parseInt(s, 10);
        console.log(num, '222222')
        return (num > 26 || num === 0) ? basic : basic + 1;
    }
    return numDecodings(s.substring(0, len - 2)) * numDecodings(s.substring(len - 2))
        + numDecodings(s.substring(0, len - 1)) * numDecodings(s.substring(len - 1))
};

// console.log(numDecodings('2*'))
console.log(numDecodings('10'))
console 命令行工具 X clear

                    
>
console