
class Solution {
public:
int numDecodings(string s) {
int n = s.size();
vector<int> dp(n, 0);
if (s[0] == '0')
return 0;
dp[0] = 1;
for (int i = 1; i < n; i++) {
string str = "";
str += s[i-1];
str += s[i];
int num = stoi(str);
cout << i << endl;
if (num % 10 == 0 && (num < 1 || num > 26))
return 0;
if (num >= 11 && num <= 26 && num % 10 != 0) {
if (i - 2 >= 0)
dp[i] = dp[i-1] + dp[i-2];
else
dp[i] = dp[i-1] + 1;
} else if (num >= 1 && num <= 26 && num % 10 == 0) {
if (i - 2 >= 0)
dp[i] = dp[i-2];
else
dp[i] = 1;
} else {
dp[i] = dp[i-1];
}
}
return dp[n-1];
}
};
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33