【发布时间】:2021-05-21 08:27:43
【问题描述】:
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;
}
};
【问题讨论】:
-
如果您在问题中至少使用一个语言标签,您将获得更多浏览量。
标签: dynamic-programming decode