题目描述:
给定一个数字,按照如下规则翻译成字符串:0翻译成“a”,1翻译成“b”…25翻译成“z”。一个数字有多种翻译可能,例如12258一共有5种,分别是bccfi,bwfi,bczi,mcfi,mzi。实现一个函数,用来计算一个数字有多少种不同的翻译方法。

分析思路:
用递归自顶向下分析,用动态规划自低向上求解
•定义问题:当最开始的一个或者两个数字被翻译成一个字符后,我们接着翻译后面剩下的数字;
•用一个递归式来表示:定义f(i)表示从第i位数字开始的不同翻译的数目,那么f(i) = f(i+1) + g(i,i+1)*f(i+2);当第i位和第i+1位两位数字拼接起来的数字在10~25的范围内时,函数g(i,i+1)的值为1,否则为0。
•该问题使用上面的递归方法会存在很多重复子问题。所以我们使用动态规划的方法,自低向上求解问题,消除重复子问题。

代码如下:

/*** 把数字翻译成字符串*/
public class NumTranslation {public static void main(String[] args) {int num = 12258;int n = String.valueOf(num).length();int[] f = new int[n + 1];f[n] = 1;for (int i = n - 1; i >= 1; i--) {if (i == n - 1) {f[i] = f[i + 1] + g(num + "", i) * 1;continue;}f[i] = f[i + 1] + g(num + "", i) * f[i + 2];}System.out.println(f[1]);}public static int g(String str, int i) {String tempStr = (str.charAt(i-1) + "") + (str.charAt(i) + "");int value = Integer.parseInt(tempStr);if (value >= 10 && value <= 25)return 1;elsereturn 0;}}

剑指offer第二版面试题46:把数字翻译成字符串(java)相关推荐

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

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

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

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

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

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

  4. leetcode刷题-面试题46. 把数字翻译成字符串

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

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

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

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

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

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

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

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

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

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

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

  10. leetcode 题库46. 把数字翻译成字符串

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

最新文章

  1. python线上编辑问题_大型线上项目中动态语言诸多问题之二 -- 以 Python 语言为例...
  2. 未能加载文件或程序集“Iesi.Collections”或它的某一个依赖项。参数错误。 (异常来自 HRESULT:0x80070057 (E_INVALIDARG))
  3. CMM中18个KPA
  4. 声音分析软件公司Cogito完成1500万美元B轮融资
  5. Nexys4DDR+OV7670实现图像灰度显示系统
  6. JAVA追加写文件方法
  7. Silverlight+WCF+ArcObjects获取地图服务图层列表的实现
  8. azure 入门_Azure Cosmos DB入门
  9. Redis(一)入门
  10. 学校计算机网络管理员面试,网络管理员面试题及答案
  11. php 加密解密函数 sha,使用sha1()函数进行加密-php加密技术
  12. STM32H743中的DCMI无法进入行中断和场中断问题
  13. C语言课程设计小孩吃梨,IQ题
  14. 让星星⭐月亮告诉你,打印完全格式的日期格式 包含 年月日时分秒毫秒
  15. win10使用python的strftime有错误_win10系统提示werfault.exe应用程序错误如何解决
  16. 尚学堂-肖斌-100集hadoop视频教程
  17. python营业数据分析_基于pandas python的美团某商家的评论销售(数据分析)
  18. [蓝桥杯2020初赛] 成绩统计
  19. Vue.js 源码分析(五) 基础篇 方法 methods属性详解
  20. 机器人潘森护盾_[翻译团]10.21版本五大强势辅助:潘森、蕾欧娜、机器人、巴德、璐璐...

热门文章

  1. 电子护照阅读器解决方案
  2. win10系统暴雪战网连不上服务器,win10系统暴雪战网无法登陆的解决方法
  3. 从键盘输入一系列字符(以回车键结束),并按字母、数字及其它字符分类统计,最后显示这三类的统计结果
  4. 微信公众号还适合投资和创业吗?
  5. WordPress社交问答社区主题
  6. 让硬盘灯不再狂闪,调整Win7系统绝技(转)
  7. Kalman滤波在温度测量中的应用(含MATLAB仿真)
  8. apple ID 注册 此时无法创建您的账户
  9. CentOS7 U盘安装操作系统卡在Reached target Basic System.
  10. Chromium网页CPU光栅化原理分析