1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | /** * @param {string} s * @return {number} */ var numDecodings = function(s) { const n = s.length; let f0 = 1; let f1 = s[0] === '0' ? 0 : 1; let fn = 0; for (let i = 1; i < n; i++) { // ***?0 if (s[i] === '0') { // ***00 // ***30, ***40 if (s[i-1] === '0' || s[i-1] > 2) { fn = 0; } // ***10, ***20 else { fn = f0; } } // ***?(1-9) else { // ***11, ***19 if (s[i-1] === '1') { fn = f0 + f1; } // ***21, ***26 else if (s[i-1] === '2' && s[i] < 7) { fn = f0 + f1; } // ***31, ***99 else { fn = f1; } } f0 = f1; f1 = fn; } return s.length === 1 ? f1 : fn; }; |