拿到这道题,首先想到的就是动态规划。即当前的这个数字可以自己翻译,也可以和前一个数字一起翻译。
和青蛙跳台阶是一个道理的
class Solution {
public:
int translateNum(int num) {
string str = to_string(num);
if(str.length() == 1) return 1;
int ans[str.length()];
ans[0] = 1;
if( (str[0] - '0') * 10 + str[1] - '0' >= 10 && (str[0] - '0') * 10 + str[1] - '0' <= 25)
ans[1] = 2;
else
ans[1] = 1; //由传入数字长度来对应返回ans数组中的值
for(int i = 2 ; i < str.length() ; i ++){
if( (str[i - 1] - '0') * 10 + str[i] - '0' >= 10 && (str[i - 1] - '0') * 10 + str[i] - '0' <= 25)
ans[i] = ans[i - 1] + ans[i - 2];
else
ans[i] = ans[i - 1];
}
return ans[str.length() - 1]; //数组下标 从0开始
}
};