leetcode刷题-面试题46. 把数字翻译成字符串
面试题46. 把数字翻译成字符串
给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 “a” ,1 翻译成 “b”,……,11 翻译成 “l”,……,25 翻译成 “z”。一个数字可能有多个翻译。请编程实现一个函数,用来计算一个数字有多少种不同的翻译方法。
示例 1:
输入: 12258
输出: 5
解释: 12258有5种不同的翻译,分别是"bccfi", "bwfi", "bczi", "mcfi"和"mzi"
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/ba-shu-zi-fan-yi-cheng-zi-fu-chuan-lcof
思路
每个数字单独考虑,只有一种,固定为dp[0] = 1
,
往后面加一位,起码有dp[i] = dp[i-1]
,i等于数字位数,比如,两位数可以有两种,往后加一位变三位,起码可以包含两位数的不同类型,即dp[i] = dp[i-1]
,然后最后一位如果与前一位结合满足条件,就可以等同于一个数字,然后,起码包含了dp[i-2],参考上面的解释
比如,
一位数(0<=x<=9)
,肯定只有一种,dp[1] = dp[0] = 1;
两位数(01<=x<=99)
,起码dp[2] = dp[1],如果两个数字结合大于等于10且小于等于25则等同于只有一位数,则又包含了dp[i-2],即两种dp[2] = dp[1] + dp[0],大于25则不符合规则,仍是一种dp[2] = dp[1]。
…
依次类推,可知每多一位数,主要在于最后一位与前一位构成的两位数是否大于等于10且小于等于25,因为0x不符合规则。
使用动态规划,转移方程为
如果最后两位构成的数大于等于10且小于等于25
dp[i] = dp[i-1] + dp[i-2]
否则
`dp[i] = dp[i-1];`
然后,又因为我们一直使用的即是dp[i-1],dp[i-2],所以可以使用两个变量来代替即可,滚动数组。
代码
class Solution {public:int translateNum(int num) {string str = to_string(num);int n = str.size();if (n <= 1)return n;int q = 1//dp[0]int p = 1;//dp[1];int ans;for (int i = 2; i <= n; ++i){if ("10"<=str.substr(i-2,2)&&"25">=str.substr(i-2,2))ans = p + q;elseans = p;q = p;p = ans;}return ans;}
};
leetcode刷题-面试题46. 把数字翻译成字符串相关推荐
- leetcode面试题46. 把数字翻译成字符串
leetcode面试题46. 把数字翻译成字符串 给定一个数字,我们按照如下规则把它翻译为字符串:**0 翻译成 "a" ,1 翻译成 "b",--,11 翻译 ...
- 【LeetCode】剑指 Offer 46. 把数字翻译成字符串
[LeetCode]剑指 Offer 46. 把数字翻译成字符串 文章目录 [LeetCode]剑指 Offer 46. 把数字翻译成字符串 package offer;public class So ...
- 把数字翻译成字符串python_LeetCode 面试题46. 把数字翻译成字符串 | Python
面试题46. 把数字翻译成字符串 题目 给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 "a" ,1 翻译成 "b",--,11 翻译成 " ...
- leetcode面试题46. 把数字翻译成字符串/典型的青蛙跳台阶题目(递归),动态规划
文章目录 题目 基本思想 题目 给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 "a" ,1 翻译成 "b",--,11 翻译成 "l&q ...
- 剑指Offer - 面试题46. 把数字翻译成字符串(DP)
1. 题目 给定一个数字,我们按照如下规则把它翻译为字符串: 0 翻译成 "a" , 1 翻译成 "b",--, 11 翻译成 "l",-- ...
- [剑指 offer] -- 动态规划-- 面试题46. 把数字翻译成字符串
1 题目描述 给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 "a" ,1 翻译成 "b",--,11 翻译成 "l",--,2 ...
- 【剑指offer】面试题46. 把数字翻译成字符串(java)
给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 "a" ,1 翻译成 "b",--,11 翻译成 "l",--,25 翻译成 & ...
- 面试题46. 把数字翻译成字符串
链接:https://leetcode-cn.com/problems/ba-shu-zi-fan-yi-cheng-zi-fu-chuan-lcof/ 题解:https://leetcode-cn. ...
- 力扣 面试题46. 把数字翻译成字符串 dp
https://leetcode-cn.com/problems/ba-shu-zi-fan-yi-cheng-zi-fu-chuan-lcof/ 思路:为了方便,我们把输入转换成一个字符串,并且下标 ...
最新文章
- 如何快速生成不同系列的Apriltag码?
- 强化学习(一)---绪论
- AcWing算法提高课 Level-3 第二章 搜索
- 第七章 Web开发实战2——商品详情页
- 【BZOJ4269】再见Xor 高斯消元
- treeset java_Java TreeSet first()方法与示例
- MSN P2P资料转载
- 每天学一点flash(11) as3.0 与asp 通信 (1)
- 湖北省2021年技能高考计算机类分数线,关于湖北省2021年普通高校招生录取控制分数线的通知!...
- JAVA加载 编译 运行,在Java 7中编译的加载/运行类6
- 2019-09-30
- FactoryBean在XML中的依赖注入方法
- php源码 gd,php 源码安装没有gd库
- 条码打印二 - 1.ZebraDesigner软件生成ZPL指令
- 微信小程序怎么开店铺
- day20 网络编程
- H5页面调用微信支付
- 为什么python文件会闪退_困扰已久的问题--python文件打开方式?为什么打开py文件会闪退!...
- python装饰器原理wraps(method)(self)_理解Python中装饰器最佳方法~
- win10录屏快捷键?电脑技能操作看这里!
热门文章
- android上的日记软件推荐,手机日记软件哪个好_安卓手机写日记软件哪个好_很好的手机日记本软件...
- 初学MyBatis(踩坑)Error querying database.
- ipad能下载python么
- python爬网站数据实例网易财经股票数据历史资金流向-批量采集网易财经所有A股股票数据并导出excel表格...
- xilinx 真双口RAM的primitives /core output 区别
- s2020gc53拼数游戏
- 手机点菜系统【附服务器源码,附日历,天气预报】
- word一编辑公式就卡死,点击分数、上下标就卡死
- [AIR应用] Air ANE扩展 for windows
- 金沙数据-《大话搜索引擎》之开篇