微软高频面试题Leetcode91 动态规划递推判断

微软高频面试题Leetcode91 动态规划递推判断_第1张图片

注意边界条件的判断,做到bugfree

class Solution {
public:
    int numDecodings(string s) {
        // dp[i] 表示s的前i个字符的解码总数
        int n = s.size();
        vector dp(n+1);
        dp[0] = 1;
        s = " " + s;
        dp[1] = (s[1]=='0'?0:1);
        for(int i=2;i<=n;i++){
            if(s[i]!='0') dp[i]+=dp[i-1];
            if(s[i-1]=='1'||(s[i-1]=='2'&&s[i]<='6')) dp[i]+=dp[i-2];
        }
        return dp[n];
    }
};

 

你可能感兴趣的:(算法)