问题描述
代码
class Solution {
public:
int numDecodings(string s) {
int n=s.size();
vector <int> dp(s.size()+1,1);
if(s[0]=='0') return 0;
for(int i=2;i<=n;i++) {
if(s[i-1]=='0') {
if(s[i-2]=='1'||s[i-2]=='2'){
dp[i]=dp[i-2];
}
else {
return 0;
}
}
else {
if(s[i-2]=='1'||(s[i-2]=='2'&&s[i-1]>='1'&&s[i-1]<='6')) {
dp[i]=dp[i-1]+dp[i-2];
}
else {
dp[i]=dp[i-1];
}
}
}
return dp[n];
}
};
二话不说上代码吧,自己套用几个字符串例子就明白了