遇到求方案总数问题–基本上是动态规划:
C++实现
class Solution {
public:
int numDecodings(string s) {
vector<int> dp(s.size()+1);
dp[0]=1;
for(int i=1;i<=s.size();i++){
if(s[i-1]!='0')dp[i]=dp[i-1];
if(i>1&&s[i-2]!='0'&&(int(s[i-2]-'0')*10+int(s[i-1]-'0'))<=26){
dp[i]+=dp[i-2];
}
}
return dp[s.size()];
}
};
java实现
class Solution {
public int numDecodings(String s) {
int len=s.length();
int []dp=new int[len+1];
dp[0]=1;
for(int i=1;i<=len;i++){
if(s.charAt(i-1)!='0')dp[i]=dp[i-1];
if(i>1&&s.charAt(i-2)!='0'&&(s.charAt(i-2)-'0')*10+(s.charAt(i-1)-'0')<=26)dp[i]+=dp[i-2];
}
return dp[len];
}
}