/*
*@剑指offer
*@46.把数字翻译成字符串
*@edited by ryunin
*@date:2019/04/26
// 面试题46:把数字翻译成字符串
// 题目:给定一个数字,我们按照如下规则把它翻译为字符串:0翻译成"a",1翻
// 译成"b",……,11翻译成"l",……,25翻译成"z"。一个数字可能有多个翻译。例
// 如12258有5种不同的翻译,它们分别是"bccfi"、"bwfi"、"bczi"、"mcfi"和
// "mzi"。请编程实现一个函数用来计算一个数字有多少种不同的翻译方法。
*/
#include <bits/stdc++.h>
using namespace std;
class Solution
{
public:
int cnt = 0;
int translationCount(int num)
{
string input = intTostring(num);
int siz = input.size();
if(input.size() <= 1)
{
cnt = cnt + 1;
return cnt;
}
if((input[0] - '0' )>= 0)
{
//input.erase(0,1);//s.erase(pos,len)
if(input.size() == 1)
cnt = translationCount(0);
else
cnt = translationCount(stringToint(input.substr(1)));
}
if(stringToint(input.substr(0,2)) <= 25 && stringToint(input.substr(0,2)) >= 10)
{
if(input.size() == 2)
{
cnt = translationCount(0);
}
else
cnt = translationCount(stringToint(input.substr(2)));
}
return cnt;
}
string intTostring(int num)
{
return to_string(num);
}
int stringToint(string s1)
{
return stoi(s1);
}
};
int main()
{
int num = 125;
int res = Solution().translationCount(num);
cout<<Solution().translationCount(num)<<endl;
}
剑指offer——46.把数字翻译成字符串
最新推荐文章于 2021-08-07 21:09:55 发布