leetcode|leetcode 题库46. 把数字翻译成字符串
面试题46. 把数字翻译成字符串
给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 “a” ,1 翻译成 “b”,……,11 翻译成 “l”,……,25 翻译成 “z”。一个数字可能有多个翻译。请编程实现一个函数,用来计算一个数字有多少种不同的翻译方法。
【leetcode|leetcode 题库46. 把数字翻译成字符串】思路:
这题其实和斐波那契数列很像,f(n) = f(n-1)+f(n-2)。但是f(n-2)多了一个限制,只有在10-25之间的数才满足。
int translateNum(int num) {
string str = to_string(num);
int f_1 = 1;
//第一个数肯定可以转换
int f_2 = 1;
//当满足条件时,f(1)=1,不为0
int f = 1;
//如果长度只有1 , 设初始值为1for(int i = 1;
i < str.size();
++i)
{
string n = str.substr(i-1, 2);
if(n<="25" && n >="10")
{
f = f_1 + f_2;
}
else
{
f = f_1;
}
f_2 = f_1;
f_1 = f;
}return f;
}
推荐阅读
- 【Leetcode/Python】001-Two|【Leetcode/Python】001-Two Sum
- leetcode|leetcode 92. 反转链表 II
- 二叉树路径节点关键值和等于目标值(LeetCode--112&LeetCode--113)
- LeetCode算法题-11.|LeetCode算法题-11. 盛最多水的容器(Swift)
- LeetCode(03)Longest|LeetCode(03)Longest Substring Without Repeating Characters
- Leetcode|Leetcode No.198打家劫舍
- [leetcode数组系列]1两数之和
- 数据结构和算法|LeetCode 的正确使用方式
- leetcode|今天开始记录自己的力扣之路
- LeetCode|LeetCode 876. 链表的中间结点