Leetcode-把数字翻译成字符串(中等)
题目描述
给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 “a” ,1 翻译成 “b”,……,11 翻译成 “l”,……,25 翻译成 “z”。一个数字可能有多个翻译。请编程实现一个函数,用来计算一个数字有多少种不同的翻译方法。
递归
一种直接是数字判断,或者换成字符串判断
易错点:还有一位时返回的是1,不是2,否则就重复了,如25
class Solution {
public:
int translateNum(int num) {
return Count(to_string(num));
}
int Count(string s) {
int len=s.size();
if(len==0||len==1) return 1;//len=0时返回1,因为len=2时,有两种可能 len(2)=len(1)+len(0)
if("10"<=s.substr(len-2,2)&&s.substr(len-2,2)<="25")
//这个范围的字符可以分成两个数字,可以合成一个数字
return Count(s.substr(0,len-2))+Count(s.substr(0,len-1));
else
return Count(s.substr(0,len-1));
}
};
数字:
class Solution {
public:
int translateNum(int num) {
return funcition(num);
}
int funcition(int num){
if(num<10) return 1;
if(num%100<=25&&num%100>=10)
return funcition(num/10)+funcition(num/100);
else
return funcition(num/10);
}
};
