这道题可以看作是动态规划类的题目,类似于跳台阶的题目。
例如:12258
状态转移方程:dp[i] = dp[i+1] + dp[i+2]
class Solution {
public:
int translateNum(int num) {
string str = to_string(num);
vector<int> nums(str.length());
int count = 0;
int length = str.length()-1;
for(int i = length;i > -1; i--){
count = i < length ? nums[i+1] : 1;
if(i < length){
int dit_1 = str[i] - '0';
int dit_2 = str[i+1] - '0';
int num = dit_1*10 + dit_2;
if(num >= 10 && num <= 25){
if(i < length-1){
count += nums[i+2];
}else{
count += 1;
}
}
}
nums[i] = count;
}
return nums[0];
}
};