直接过了
class Solution {
public:
int numDecodings(string s) {
vector<int> dp(s.length(), 0);
if(s[0] != '0')
dp[0] += 1;
else
return 0;
if(s.length() == 1)
return dp[0];
if(s[1] != '0')
dp[1] += 1;
if(chartonum(s[0],s[1]))
dp[1] += dp[0];
for(int i = 2; i < s.length(); i++){
if(s[i] != '0')
dp[i] += dp[i-1];
if(chartonum(s[i-1],s[i]))
dp[i] += dp[i-2];
}
return dp[s.length()-1];
}
int chartonum(char a, char b){
int dec = a - '0';
int single = b - '0';
int num = dec*10 + single;
if(dec == 0 || dec*10 + single > 26)
return 0;
else
return num;
}
};
答案