给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 “a” ,1 翻译成 “b”,……,11 翻译成 “l”,……,25 翻译成 “z”。一个数字可能有多个翻译。请编程实现一个函数,用来计算一个数字有多少种不同的翻译方法。
示例 1:
输入: 12258
输出: 5
解释: 12258有5种不同的翻译,分别是"bccfi", "bwfi", "bczi", "mcfi"和"mzi"
思路
直接递归暴力解决
class Solution {
public:
int result= 0;
void translate(string num, int index){
if(index>= int(num.length())){
result++;
return;
}
// 一个数单独翻译
translate(num, index+ 1);
// 可以两个数一起翻译的条件是:第一个数不等于0,两个数组成的数小于26
if(index+ 1< int(num.length())&& num[index]- '0'!= 0
&& ((num[index]- '0')*10+ num[index+ 1]- '0'<= 25))
translate(num, index+ 2);
}
int translateNum(int num) {
string strNum= to_string(num);
translate(strNum, 0);
return result;
}
};