欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

91. 解码方法

程序员文章站 2022-07-16 10:25:40
...

91. 解码方法
约束版的f(n) = f(n-1) + f(n-2);,其中如果是s[n-1]为0,f(n-1) = 0,f(n) = f(n-2),因为0无法单独解码,而f(n-2)的条件则是必须在1与26之间,否则f(n) = f(n-1)。

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