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;
}
};