leetcode 剑指offer-46.把数字翻译成字符串
原题如下:
剑指offer-46.把数字翻译成字符串
2020年6月9日 每日一题
题解
方法一:
当我们考虑单个数字的时候,就只有一种翻译的结果,重要的是,我们遇到连续两个字母也可以翻译成字母,那么我们不妨建立一个数组ans[l+1],l为数字长度,来记录前n位的数字可以组成的答案种类,数组长度为数字长度多1,很明显ans[0]=ans[1]=1;我们从ans[2]来开始考虑,其实也是考虑一般状况下的ans[n]。假如末两位的组成是10到25的数字,那么我们在组成前n位答案时,后两位连起来考虑,其实答案种数就是ans[n-2],而如果后两位分开考虑,其实答案的种数就是前(n-1)位又添加了一位数字的种数,跟ans[n-1]应该一样,总的结果数就是ans[n-2]+ans[n-1];倘若假如末两位的组成不是10到25的数字,那么很简单就是前(n-1)位又添加了一位数字的种数,就是ans[n-1]
本答案java实例如下:
/**作者@v7fgg*执行用时 :5 ms, 在所有 Java 提交中击败了13.30%的用户*内存消耗 :36.5 MB, 在所有 Java 提交中击败了100.00%的用户*2020年6月9日 8:03*/
class Solution {public int translateNum(int num) {String s=num+"";int l=s.length();if(l<2){return 1;}int ans[]=new int[l+1];ans[0]=1;ans[1]=1;for(int i=2;i<=l;i++){String str=s.substring(i-2,i);int j=Integer.parseInt(str);if(j>=10&&j<=25){ans[i]=ans[i-2]+ans[i-1];continue;}ans[i]=ans[i-1];}return ans[l];}
}
另外,在处理数字的时候 ,技巧有
1、不用数组,而采用三个临时变量,节省空间;
2、获取末尾数字时,采用取模的方式,节省空间;
3、从右往左遍历,效果一样
以上思路参考资料:https://leetcode-cn.com/problems/ba-shu-zi-fan-yi-cheng-zi-fu-chuan-lcof/solution/mian-shi-ti-46-ba-shu-zi-fan-yi-cheng-zi-fu-chua-6/
leetcode 剑指offer-46.把数字翻译成字符串相关推荐
- leetcode 剑指 Offer 46. 把数字翻译成字符串
剑指 Offer 46. 把数字翻译成字符串 给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 "a" ,1 翻译成 "b",--,11 翻译成 &q ...
- 126. Leetcode 剑指 Offer 46. 把数字翻译成字符串 (动态规划- 字符串系列)
class Solution:def translateNum(self, num: int) -> int:nums = str(num)n = len(nums)#异常情况if n < ...
- 【LeetCode】剑指 Offer 46. 把数字翻译成字符串
[LeetCode]剑指 Offer 46. 把数字翻译成字符串 文章目录 [LeetCode]剑指 Offer 46. 把数字翻译成字符串 package offer;public class So ...
- 剑指 Offer 46. 把数字翻译成字符串(动态规划+回溯+递归 解法)
剑指 Offer 46. 把数字翻译成字符串 问题描述 给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 "a" ,1 翻译成 "b",--,11 翻 ...
- 【算法】剑指 Offer 46. 把数字翻译成字符串
1.概述 剑指 Offer 46. 把数字翻译成字符串 给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 "a" ,1 翻译成 "b",--,11 翻 ...
- 【LeetCode笔记】剑指 Offer 46. 把数字翻译成字符串(Java、字符串、动态规划、DFS)
文章目录 题目描述 思路 && 代码 1. 动态规划做法 2. DFS 做法 二刷 打卡第六天~继续加油! 题目描述 万物皆可爬楼梯.-和爬楼梯原理很像,都是使用动态规划的做法来做~ ...
- Leetcode刷题笔记——剑指 Offer 46. 把数字翻译成字符串(中等)
文章目录 题目描述 解法:动态规划 方法一:字符串遍历 复杂度分析 C++代码实现 方法二:数字求余 复杂度分析 C++代码实现 参考链接 题目描述 给定一个数字,我们按照如下规则把它翻译为字符串:0 ...
- 剑指 Offer 46. 把数字翻译成字符串
题目描述: 给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 "a" ,1 翻译成 "b",--,11 翻译成 "l",--,25 ...
- 【千字分析】剑指 Offer 46. 把数字翻译成字符串
我是小张同学,立志用更简洁的代码做更高效的表达 给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 "a" ,1 翻译成 "b",--,11 翻译成 & ...
- 【剑指 Offer 46. 把数字翻译成字符串】【剑指 Offer 10- II. 青蛙跳台阶问题】【198. 打家劫舍】【动态规划】
青蛙跳台阶,打家劫舍,字母相同编码三道题思路总结 总结我自己思路的,写的不详细,想看详细的可以跳转到我加的链接,都是力扣上同一个人写的题解,很厉害. 字符串翻译数字 字符串翻译数字 当最后一位数字单独 ...
最新文章
- 176页报告辟谣自动化时代的就业危机(附下载)
- SpringBoot中使用常量类来判断对象某属性的值是否包含在指定集合中
- Java Web之文件的上传及下载
- OSChina 周三乱弹 —— 爸爸说,这个是从他硬盘里掉出来的
- (转)Spring Boot 日志配置(超详细)
- 31.QT中串口操作
- Transactional ejb 事务陷阱
- jquery中ajax应用中的通用ajax()函数
- Altium design 的smart pdf 打印不出汉字来。
- mysql与sim900a_sim900a和sim800a的区别是什么
- Kubelet cAdvisor 资源监控
- 一个亿,啪一下就没了!
- JavaWeb——会话追踪之Cookie和Session
- 用canvas制作的躲避球小游戏html5源码
- 项目管理过程之进度控制
- HashMap中的bucket介绍
- 【实例】Python tkinter 实例 桌面便签
- 时间格式2020-09-29T18:02:02.000Z转换为“年月日时分秒“
- 即插即用 | Fast-ParC:CNN和ViT通用Trick!即插即涨,即提速!
- 自动给好友发送新春祝福的java脚本
热门文章
- Python 字典类型转换json格式
- 单片机电梯上下行_为什么未来的电梯会移动得不仅仅是上下。
- 看完 GitHub 上这几个奇葩项目后,我忍不住笑了 233333
- Mairadb数据库基本操作之数据管理
- VR技术成为国家新基建项目主力军
- P2887 [USACO07NOV]防晒霜
- 前端MD5加密------js-md5
- 极光推送:java后台向APP推送消息(android,ios极光推送消息)
- 在移动设备上实时执行的DNN权重修剪中缺失但令人满意的稀疏性
- gem意思_出道10年,很多人不知道邓紫棋英文名GEM背后含义