12xxxxxx;将1作为单独的一个数看,解码方法和2xxxxxx相同;将12作为一个整体看,解码方法数量和xxxxxx相同。
最终的数量是二者之和。
默认情况下,当前i位等于i+1位的种类数,如果i==1 或者 i==‘2’&&(i+1)<=‘5’,就再加上i+2位的种类数
class Solution {
public:
int getTranslationCount(string s) {
int n = s.size();
if (!n) return 0;
if (n == 1) return 1;
vector<int> dp(n + 1, 0);
dp[n - 1] = 1;
for (int i = n - 2; i >= 0; i--) {
dp[i] = dp[i+1];
if (s[i] == '1' || (s[i] == '2' && s[i+1] <='5')) {
dp[i] += dp[i+2];
}
}
return dp[0];
}
};