case1思想:递归
每次可以做两种选,一次仅翻译1位,或者一次翻译两位(要求这两位表示的数在0-25之间)

class Solution {
//没有返回值int count = 0;public void helper(String num,int start){if(start==num.length()){count++;return;}//做选择//每次只翻译1位helper(num,start+1);//每次翻译两位//注意这里02不能算做一个两位数if(start<num.length()-1&&num.charAt(start)!='0'&&((num.charAt(start)-'0')*10+(num.charAt(start+1)-'0'))<=25){helper(num,start+2);}}public int translateNum(int num) {if(num<0) return 0;if(num<9) return 1;  String s =String.valueOf(num);  helper(s,0);return count;}
}
class Solution {
//带返回值类型public int helper(String num,int start){if(start==num.length()){return 1;}//做选择//每次只翻译1位int count =  helper(num,start+1);//每次翻译两位if(start<num.length()-1&&num.charAt(start)!='0'&&((num.charAt(start)-'0')*10+(num.charAt(start+1)-'0'))<=25){return count+helper(num,start+2);}return count;}public int translateNum(int num) {if(num<0) return 0;if(num<9) return 1;  String s =String.valueOf(num);  return helper(s,0);}
}

case2:
采用DP思想
:跟爬楼梯很像,一次要么爬1阶(翻译1位),要么爬两阶(翻译两位)只不过这里不是无条件爬两阶而已
dp[i] = dp[i-1]+dp[i-2]
dp[i]表示从第0位开始每次翻译1位或两位的方式翻译完到第i位的方法数

class Solution {public int translateNum(int num) {   if(num<9) return 1;String s = String.valueOf(num);int[] dp = new int[s.length()+1];//临界条件dp[0] = 1;dp[1] = 1;for(int i=2;i<=s.length();i++){if(s.charAt(i-2)!='0'&&((s.charAt(i-2)-'0')*10+(s.charAt(i-1)-'0'))<=25){dp[i] = dp[i-1]+dp[i-2];}else{dp[i] = dp[i-1];}}return dp[s.length()];}
}
class Solution {/*dp[i] = dp[i-1]+dp[i-2]dp[i]表示,从第0位开始每次翻译1位或两位的方式翻译完到第i位的方法数*/public int translateNum(int num) {   if(num<9) return 1;String s = String.valueOf(num);int i_1 = 1;int i_2 = 1;for(int i=2;i<=s.length();i++){if(s.charAt(i-2)!='0'&&((s.charAt(i-2)-'0')*10+(s.charAt(i-1)-'0'))<=25){int temp = i_1;i_1+=i_2;i_2 = temp;}else{i_2 = i_1;}}return i_1;}
}

剑指offer T46把数字翻译成字符串相关推荐

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

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

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

    1.概述 剑指 Offer 46. 把数字翻译成字符串 给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 "a" ,1 翻译成 "b",--,11 翻 ...

  3. 剑指 Offer 46. 把数字翻译成字符串(动态规划+回溯+递归 解法)

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

  4. leetcode 剑指 Offer 46. 把数字翻译成字符串

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

  5. 【千字分析】剑指 Offer 46. 把数字翻译成字符串

    我是小张同学,立志用更简洁的代码做更高效的表达 给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 "a" ,1 翻译成 "b",--,11 翻译成 & ...

  6. 【LeetCode笔记】剑指 Offer 46. 把数字翻译成字符串(Java、字符串、动态规划、DFS)

    文章目录 题目描述 思路 && 代码 1. 动态规划做法 2. DFS 做法 二刷 打卡第六天~继续加油! 题目描述 万物皆可爬楼梯.-和爬楼梯原理很像,都是使用动态规划的做法来做~ ...

  7. 剑指 Offer 46. 把数字翻译成字符串

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

  8. Leetcode刷题笔记——剑指 Offer 46. 把数字翻译成字符串(中等)

    文章目录 题目描述 解法:动态规划 方法一:字符串遍历 复杂度分析 C++代码实现 方法二:数字求余 复杂度分析 C++代码实现 参考链接 题目描述 给定一个数字,我们按照如下规则把它翻译为字符串:0 ...

  9. 126. Leetcode 剑指 Offer 46. 把数字翻译成字符串 (动态规划- 字符串系列)

    class Solution:def translateNum(self, num: int) -> int:nums = str(num)n = len(nums)#异常情况if n < ...

最新文章

  1. ERP与EWM集成配置-ERP端组织架构(二)
  2. 2018-2020年Gartner战略科技发展趋势一览!
  3. AI也会查水表啦!德国小哥开发水表读取器,可OTA升级,成本不到80元
  4. 指定开始_@高坪人,熏腊肉开始啦!指定地点仅限这9个地方,别走错啦
  5. 第一季4:Hi3518E_SDK_Vx.x.x.x的SDK目录结构
  6. TypeScript入门教程 之 枚举 Enums
  7. Java 异步回调机制实例解析
  8. 基于spring+quartz的分布式定时任务框架
  9. 实现树状图_举个栗子!Tableau 技巧(132):用参数操作实现数据下钻
  10. 关于安装NTKO Office插件的方法
  11. openwrt - transmission
  12. PostgreSQL系列- 3- 客户端工具
  13. 计算机为什么老是重启,为什么电脑开机后总是自动重启?电脑开机后自动重启怎么办?...
  14. win32gui恢复小化窗口,前置窗口
  15. python中int函数_int()函数以及Python中的示例
  16. 阿里云服务器是干什么用的?
  17. cocos2dx 3.1.1中EaseRateAction动作类的变化
  18. OIM Training Lab 1
  19. ajax实现文件下载
  20. 周末了,围观知乎福利话题,放松一下

热门文章

  1. 物联网周刊(第 1 期):电动汽车的未来
  2. Python 身体质量指数BMI
  3. 关于TCP快速重传的细节-重传优先级与重传触发条件
  4. 圆的周长面积(YZOJ-1020)
  5. IC验证培训——实战SV验证学习(lab1)
  6. 田野调查手记·浮山篇(六)
  7. 苏州地区公交查询的Webservice
  8. 鼠标右键,以管理员身份在当前目录打开命令行窗口
  9. 批量下载图片的插件-免费自动下载图片的插件
  10. 常用的电平转换方案(74HC245、74LVC4245等)