leetcode 91. Decode Ways

91. Decode Ways

https://www.cnblogs.com/grandyang/p/4313384.html

当前位置只可能来自前一个位置和前两个位置的dp,来自前一个位置的话,当前的数字不能是0;来自前两个位置,必须是1到26之间

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

 

posted @ 2019-05-03 22:34  有梦就要去实现他  阅读(187)  评论(0编辑  收藏  举报