91 Decode Ways

将数字解码为字母可能的解码方法,动态规划求解,faster than 98%
dp[i] = dp[i - 1] + dp[i - 1]
dp[i] = dp[i - 1]
dp[i] = dp[i - 2]
return 0

/**
 * @param {string} s
 * @return {number}
 */
var numDecodings = function(s) {
    if (s.charAt(0) === '0') return 0
    var dp = new Array(s.length)
    dp[0] = 1
    for (var i = 1; i < s.length; i++){
        var prev = s.charAt(i) - '0'
        var cur = s.charAt(i) - '0' + 10 * (s.charAt(i - 1) - '0')
        if (prev !== 0 && cur >= 10 && cur <= 26) {
            dp[i] = i === 1 ? (dp[i - 1] + 1) : (dp[i - 1] + dp [i - 2])
        } else if(prev === 0 && cur >= 10 && cur <= 26) {
            dp[i] = i === 1 ? 1 : dp[i - 2]
        } else if(prev === 0 && (cur < 10 || cur > 26)) {
            return 0
        } else {
            dp[i] = dp[i - 1]
        }
    }
    return dp[s.length - 1]
};

你可能感兴趣的:(91 Decode Ways)