leetcode: 解码方式 dp 解决方案

时间:2021-05-21 08:27:43

标签: dynamic-programming decode

leetcode:解码方式

我尝试使用 dp 来优化我的递归,但是由于运行时间超过了限制,它似乎效果不佳。谁能帮我写代码并告诉我 dp 出了什么问题?

class Solution {
public:
    int numDecodings(string s) {
        
        int totalnum;
        *map<string, int> dp;*
        stringstream ss;
        int sint;
        string s11=s.substr(0,2);
        stringstream geek(s11);
        geek>>sint;
        if(dp[s]){
            totalnum=dp[s];
        }
        else if(s[0]=='0'){
            return 0;
        }else if(sint>26){
            string s1=s.substr(1,s.length()-1);
            totalnum=numDecodings(s1);
        }
        else
        {
        if(s.length()==1){
            return 1;
        }
        else if(s.length()==2){
            string s1=s.substr(1,s.length()-1);
            if(s[s.length()-1] !=0){totalnum=numDecodings(s1)+1;}
            else{totalnum=numDecodings(s1);}
        }
        else if(s.length()>2){
            string s1=s.substr(1,s.length()-1);
            string s2=s.substr(2,s.length()-2);
            totalnum=numDecodings(s1)+numDecodings(s2);}
        }
        
        *dp.insert(pair<string, int>(s, totalnum));*
        return totalnum;
    }
}; 

0 个答案:

没有答案