剑指offer第二版面试题46:把数字翻译成字符串(java)
题目描述:
给定一个数字,按照如下规则翻译成字符串: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)相关推荐
- 【剑指offer】面试题46. 把数字翻译成字符串(java)
给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 "a" ,1 翻译成 "b",--,11 翻译成 "l",--,25 翻译成 & ...
- [剑指 offer] -- 动态规划-- 面试题46. 把数字翻译成字符串
1 题目描述 给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 "a" ,1 翻译成 "b",--,11 翻译成 "l",--,2 ...
- 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. 把数字翻译成字符串(DP)
1. 题目 给定一个数字,我们按照如下规则把它翻译为字符串: 0 翻译成 "a" , 1 翻译成 "b",--, 11 翻译成 "l",-- ...
- 面试题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/ 思路:为了方便,我们把输入转换成一个字符串,并且下标 ...
- leetcode面试题46. 把数字翻译成字符串/典型的青蛙跳台阶题目(递归),动态规划
文章目录 题目 基本思想 题目 给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 "a" ,1 翻译成 "b",--,11 翻译成 "l&q ...
- leetcode 题库46. 把数字翻译成字符串
面试题46. 把数字翻译成字符串 给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 "a" ,1 翻译成 "b",--,11 翻译成 "l& ...
最新文章
- python线上编辑问题_大型线上项目中动态语言诸多问题之二 -- 以 Python 语言为例...
- 未能加载文件或程序集“Iesi.Collections”或它的某一个依赖项。参数错误。 (异常来自 HRESULT:0x80070057 (E_INVALIDARG))
- CMM中18个KPA
- 声音分析软件公司Cogito完成1500万美元B轮融资
- Nexys4DDR+OV7670实现图像灰度显示系统
- JAVA追加写文件方法
- Silverlight+WCF+ArcObjects获取地图服务图层列表的实现
- azure 入门_Azure Cosmos DB入门
- Redis(一)入门
- 学校计算机网络管理员面试,网络管理员面试题及答案
- php 加密解密函数 sha,使用sha1()函数进行加密-php加密技术
- STM32H743中的DCMI无法进入行中断和场中断问题
- C语言课程设计小孩吃梨,IQ题
- 让星星⭐月亮告诉你,打印完全格式的日期格式 包含 年月日时分秒毫秒
- win10使用python的strftime有错误_win10系统提示werfault.exe应用程序错误如何解决
- 尚学堂-肖斌-100集hadoop视频教程
- python营业数据分析_基于pandas python的美团某商家的评论销售(数据分析)
- [蓝桥杯2020初赛] 成绩统计
- Vue.js 源码分析(五) 基础篇 方法 methods属性详解
- 机器人潘森护盾_[翻译团]10.21版本五大强势辅助:潘森、蕾欧娜、机器人、巴德、璐璐...