class Solution {
public:
int numDecodings(string s) {
vector<int> dp(s.length()+1,1);
if (s[0] == '0') return 0;
for (int i=1; i<s.length(); i++){
if (s[i] == '0') {
if (s[i-1] == '1' || s[i-1] == '2') {
dp[i+1] = dp[i-1];
continue;
}
else return 0;
}
dp[i+1] = dp[i];
if (stoi(s.substr(i-1,2)) <= 26 && stoi(s.substr(i-1,2)) > 10){
dp[i+1] += dp[i-1];
}
}
return dp.back();
}
};