91. Decode Ways

来源:互联网 发布:c语言数组存储方式 编辑:程序博客网 时间:2024/06/06 09:50

垃圾DFS

class Solution {public:    int ans = 0;    int sz = 0;    int numDecodings(string s) {        sz = s.size();        if(0 == sz) return 0;        dfs(s, 0);        return ans;    }    void dfs(const string &s, int pos){        if(pos >= sz){            ++ans;            return;        }        if(s[pos] == '0') return;        dfs(s, pos+1);        if(pos >= sz-1)            return;        int t = 10 * (s[pos] - '0') + (s[pos+1] - '0');        if(t <= 26)            dfs(s, pos+2);    }};

DB

class Solution {public:    int numDecodings(string s) {        int sz = s.size();        if(0 == sz) return 0;        vector<int> dp(sz+1, 0);        dp[0] = 1;        if(s[0] == '0') dp[1] = 0;        else dp[1] = 1;        for(int i = 1; i < s.size(); ++i){            if('0' == s[i-1]){                if('0' != s[i])                    dp[i+1] += dp[i];            }            else{                if('0' != s[i]){                    dp[i+1] += dp[i];                }                int t = 10 * (s[i-1] - '0') + s[i] - '0';                if(t <= 26)                    dp[i+1] += dp[i-1];            }        }        return dp.back();    }};


原创粉丝点击