动态规划LeetCode91.解码方法

问题描述

动态规划LeetCode91.解码方法_第1张图片

代码

class Solution {
public:
    int numDecodings(string s) {
    int n=s.size();
    vector  dp(s.size()+1,1);
    if(s[0]=='0') return 0;
    for(int i=2;i<=n;i++) {
        if(s[i-1]=='0') {
            if(s[i-2]=='1'||s[i-2]=='2'){
                dp[i]=dp[i-2];
            }
            else {
                return 0;
            }
        }
        else {
            if(s[i-2]=='1'||(s[i-2]=='2'&&s[i-1]>='1'&&s[i-1]<='6')) {
                dp[i]=dp[i-1]+dp[i-2];
            }
            else {
                dp[i]=dp[i-1];
            }
        }
    }
    return dp[n];
    }
};

二话不说上代码吧,自己套用几个字符串例子就明白了

你可能感兴趣的:(leetcode,动态规划,leetcode,动态规划,算法)