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];
}
};
91. 解码方法
最新推荐文章于 2024-05-06 17:42:44 发布