剑指Offer - 面试题46. 把数字翻译成字符串(DP)
1. 题目
给定一个数字,我们按照如下规则把它翻译为字符串:
0 翻译成 “a” ,
1 翻译成 “b”,……,
11 翻译成 “l”,……,
25 翻译成 “z”。
一个数字可能有多个翻译。请编程实现一个函数,用来计算一个数字有多少种不同的翻译方法。
示例 1:
输入: 12258
输出: 5
解释: 12258有5种不同的翻译,
分别是"bccfi", "bwfi", "bczi", "mcfi"和"mzi"提示:
0 <= num < 2^31
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/ba-shu-zi-fan-yi-cheng-zi-fu-chuan-lcof
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
2. 解题
- 动态规划,类似斐波那契数列
- dp[i] 表示翻译第 i 位字符时的方案数
- dp[0] 空串方案数 1
- dp[1] 第一位数只有1种翻译
str[i-2]=='1' ||(str[i-2]=='2' && str[i-1] <='5')
,可以2个字符翻译2个,也可以合并- 其余情况,只能单独翻译成1个
class Solution {public:int translateNum(int num) {string str = to_string(num);int i, n = str.size();int dp[n+1] = {0};dp[0] = 1;//第0个字符空串dp[1] = 1;//第一个字符翻译,只有1种可能for(i = 2; i <= n; ++i){if(str[i-2]=='1' ||(str[i-2]=='2' && str[i-1] <='5'))//该种情况,可以把这两位数,翻成1个或者2个字符dp[i] = dp[i-2]+dp[i-1];else//34,29,只能单独翻译dp[i] = dp[i-1];}return dp[n];}
};
剑指Offer - 面试题46. 把数字翻译成字符串(DP)相关推荐
- 力扣 面试题46. 把数字翻译成字符串 dp
https://leetcode-cn.com/problems/ba-shu-zi-fan-yi-cheng-zi-fu-chuan-lcof/ 思路:为了方便,我们把输入转换成一个字符串,并且下标 ...
- leetcode面试题46. 把数字翻译成字符串
leetcode面试题46. 把数字翻译成字符串 给定一个数字,我们按照如下规则把它翻译为字符串:**0 翻译成 "a" ,1 翻译成 "b",--,11 翻译 ...
- leetcode刷题-面试题46. 把数字翻译成字符串
面试题46. 把数字翻译成字符串 给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 "a" ,1 翻译成 "b",--,11 翻译成 "l& ...
- 把数字翻译成字符串python_LeetCode 面试题46. 把数字翻译成字符串 | Python
面试题46. 把数字翻译成字符串 题目 给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 "a" ,1 翻译成 "b",--,11 翻译成 " ...
- 【剑指offer】面试题46. 把数字翻译成字符串(java)
给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 "a" ,1 翻译成 "b",--,11 翻译成 "l",--,25 翻译成 & ...
- [剑指 offer] -- 动态规划-- 面试题46. 把数字翻译成字符串
1 题目描述 给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 "a" ,1 翻译成 "b",--,11 翻译成 "l",--,2 ...
- leetcode面试题46. 把数字翻译成字符串/典型的青蛙跳台阶题目(递归),动态规划
文章目录 题目 基本思想 题目 给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 "a" ,1 翻译成 "b",--,11 翻译成 "l&q ...
- 面试题46. 把数字翻译成字符串
链接:https://leetcode-cn.com/problems/ba-shu-zi-fan-yi-cheng-zi-fu-chuan-lcof/ 题解:https://leetcode-cn. ...
- leetcode 题库46. 把数字翻译成字符串
面试题46. 把数字翻译成字符串 给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 "a" ,1 翻译成 "b",--,11 翻译成 "l& ...
最新文章
- element vue 动态单选_软件更新丨vue-element-admin 4.0.0 beta 发布,后台集成方案
- 6、通过xpath获取网页数据
- PAT乙级全套超详细题解【建议收藏】
- 项目由于装运点不同交货拆分解决方案
- [LeetCode] Find All Numbers Disappeared in an Array 找出数组中所有消失的数字
- java向应用程序传递参数_Java应用程序中的消息传递主体
- Django - Form和ModelForm
- 服务器可以装2个系统吗,云服务器可以装多个系统吗
- Permutation(构造+思维)
- Python datetime time
- yconsole使用说明
- python禁用键盘鼠标_在Python中禁用或锁定鼠标和键盘?
- 车内看车头正不正技巧_交规理论最全技巧口诀,学会后100%过关!
- 用通俗易懂的方式讲解: GBDT算法及案例(Python 代码)
- Android开发学习总结——appcompat_v7项目说明
- idea调试jdk源码
- 计算机专业英语单词完美打印,计算机专业英语词汇(完美排版_大容量打印版).pdf...
- UE4动画蒙太奇位移
- CVPR 2021 | 目标引导的人类注意力估计提升零样本学习
- Python 10个项目创意
热门文章
- ubuntu14.04安装 R16 Tina Linux SDK
- elasticsearch java_java Elasticsearch详细介绍及使用实例分析
- Django之项目搭建和配置总结(一)
- poj 3469(网络流模版)
- struts2异常处理
- 从根本上解决 Infopath 2010 重复表的序号问题
- 对于一颗完全二叉树,要求给所有节点加上一个pNext指针,指向同一层的相邻节点;如果当前节点已经是该层的最后一个节点,则将pNext指针指向NULL;给出程序实现,并分析时间复杂度和空间复杂度。
- SensorKernel层框架分析
- 被LCD调戏睡不着了
- Linux 内核红黑树分析