面试题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. 把数字翻译成字符串相关推荐

  1. leetcode面试题46. 把数字翻译成字符串

    leetcode面试题46. 把数字翻译成字符串 给定一个数字,我们按照如下规则把它翻译为字符串:**0 翻译成 "a" ,1 翻译成 "b",--,11 翻译 ...

  2. 【LeetCode】剑指 Offer 46. 把数字翻译成字符串

    [LeetCode]剑指 Offer 46. 把数字翻译成字符串 文章目录 [LeetCode]剑指 Offer 46. 把数字翻译成字符串 package offer;public class So ...

  3. 把数字翻译成字符串python_LeetCode 面试题46. 把数字翻译成字符串 | Python

    面试题46. 把数字翻译成字符串 题目 给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 "a" ,1 翻译成 "b",--,11 翻译成 " ...

  4. leetcode面试题46. 把数字翻译成字符串/典型的青蛙跳台阶题目(递归),动态规划

    文章目录 题目 基本思想 题目 给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 "a" ,1 翻译成 "b",--,11 翻译成 "l&q ...

  5. 剑指Offer - 面试题46. 把数字翻译成字符串(DP)

    1. 题目 给定一个数字,我们按照如下规则把它翻译为字符串: 0 翻译成 "a" , 1 翻译成 "b",--, 11 翻译成 "l",-- ...

  6. [剑指 offer] -- 动态规划-- 面试题46. 把数字翻译成字符串

    1 题目描述 给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 "a" ,1 翻译成 "b",--,11 翻译成 "l",--,2 ...

  7. 【剑指offer】面试题46. 把数字翻译成字符串(java)

    给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 "a" ,1 翻译成 "b",--,11 翻译成 "l",--,25 翻译成 & ...

  8. 面试题46. 把数字翻译成字符串

    链接:https://leetcode-cn.com/problems/ba-shu-zi-fan-yi-cheng-zi-fu-chuan-lcof/ 题解:https://leetcode-cn. ...

  9. 力扣 面试题46. 把数字翻译成字符串 dp

    https://leetcode-cn.com/problems/ba-shu-zi-fan-yi-cheng-zi-fu-chuan-lcof/ 思路:为了方便,我们把输入转换成一个字符串,并且下标 ...

最新文章

  1. 如何快速生成不同系列的Apriltag码?
  2. 强化学习(一)---绪论
  3. AcWing算法提高课 Level-3 第二章 搜索
  4. 第七章 Web开发实战2——商品详情页
  5. 【BZOJ4269】再见Xor 高斯消元
  6. treeset java_Java TreeSet first()方法与示例
  7. MSN P2P资料转载
  8. 每天学一点flash(11) as3.0 与asp 通信 (1)
  9. 湖北省2021年技能高考计算机类分数线,关于湖北省2021年普通高校招生录取控制分数线的通知!...
  10. JAVA加载 编译 运行,在Java 7中编译的加载/运行类6
  11. 2019-09-30
  12. FactoryBean在XML中的依赖注入方法
  13. php源码 gd,php 源码安装没有gd库
  14. 条码打印二 - 1.ZebraDesigner软件生成ZPL指令
  15. 微信小程序怎么开店铺
  16. day20 网络编程
  17. H5页面调用微信支付
  18. 为什么python文件会闪退_困扰已久的问题--python文件打开方式?为什么打开py文件会闪退!...
  19. python装饰器原理wraps(method)(self)_理解Python中装饰器最佳方法~
  20. win10录屏快捷键?电脑技能操作看这里!

热门文章

  1. android上的日记软件推荐,手机日记软件哪个好_安卓手机写日记软件哪个好_很好的手机日记本软件...
  2. 初学MyBatis(踩坑)Error querying database.
  3. ipad能下载python么
  4. python爬网站数据实例网易财经股票数据历史资金流向-批量采集网易财经所有A股股票数据并导出excel表格...
  5. xilinx 真双口RAM的primitives /core output 区别
  6. s2020gc53拼数游戏
  7. 手机点菜系统【附服务器源码,附日历,天气预报】
  8. word一编辑公式就卡死,点击分数、上下标就卡死
  9. [AIR应用] Air ANE扩展 for windows
  10. 金沙数据-《大话搜索引擎》之开篇