class Solution {
public:
int translateNum(int num) {
string s=to_string(num);
int n=s.size();
vector<int> dp(n+1,1); // dp数组定义:dp[i]表示前i个元素有多少种合理的表示方法
for(int i=2;i<n+1;i++){
int tmp=stoi(s.substr(i-2,2));
if(tmp>=10 && tmp<=25){ // 说明[i-2,i)的两个数不仅可以组合表示,也可以单独表示
dp[i]=dp[i-1]+dp[i-2]; // dp[i-1]是[i-2,i)单独表示的个数 dp[i-2]是组合表示的个数
}
else{ // [i-2,i)组成的数有前导0或者不在[10-25之内]
dp[i]=dp[i-1];
}
}
return dp[n];
}
};