剑指offer 面试题46 python版+解析:把数字翻译成字符串
题目描述:给定一个数字,按照如下规则翻译成字符串:0翻译成"a",1翻译成"b"......25翻译成”z"。一个数字可能有多个翻译。如12258有5种不同的翻译,分别是"bccfi", "bwfi", "bczi", "mcfi", "mzi"。请实现一个函数,用来计算一个数字有多少种不同的翻译方法。
思路。当最初的一个或者两个数字被翻译成一个字符后,我们接着翻译后面剩下的数字。可以用递归来做。但是递归会有重复的出现。比如12258,翻译成1和2258,或12和258,然后2258可以翻译成2和258或22和58,这样258又重复出现了。因此我们选择从最小的子问题开始自下而上解决问题。也就是我们从数字的末尾开始,然后从右到左翻译并计算不同翻译的数目。
class Solution:def GetTranslationCount(self, number):if number<0:return 0StrNumber = str(number)length = len(StrNumber)count = 0counts = [0]*lengthfor i in range(length-1, -1, -1):count = 0if i<length-1:count = counts[i+1]else:count = 1print(count, counts)if i<length-1:digit1 = int(StrNumber[i])digit2 = int(StrNumber[i+1])converted = digit1*10+digit2if converted>=10 and converted<=25:if i<length-2:count = count+counts[i+2]else:count = count+1counts[i] = countcount = counts[0]return count
剑指offer 面试题46 python版+解析:把数字翻译成字符串相关推荐
- 剑指offer——面试题46:求1+2+...+n
剑指offer--面试题46:求1+2+-+n 题目描述 求1+2+3+-+n,要求不能使用乘除法.for.while.if.else.switch.case等关键字及条件判断语句(A?B:C). 个 ...
- 剑指offer面试题[8]-旋转数组的最小数字
题目描述 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转. 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素. 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个 ...
- [剑指offer]面试题42:翻转单词顺序 VS左旋转字符串
面试题42:翻转单词顺序 VS左旋转字符串 题目一:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变.为简单起见,标点符号和普通字母一样处理.例如输入字符串"I am a st ...
- 剑指offer全套题解:Python版
1. 二叉树的镜像 class Solution:def invertTree(self, root: Optional[TreeNode]) -> Optional[TreeNode]:if ...
- 剑指Offer - 面试题46. 把数字翻译成字符串(DP)
1. 题目 给定一个数字,我们按照如下规则把它翻译为字符串: 0 翻译成 "a" , 1 翻译成 "b",--, 11 翻译成 "l",-- ...
- [剑指offer]面试题第[67]题[Leetcode][JAVA][第8题] 字符串转换整数 (atoi)[字符串]
[问题描述] 请你来实现一个 atoi 函数,使其能将字符串转换成整数.首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止.接下来的转化规则如下:如果第一个非空字符为正或者 ...
- 剑指Offer - 面试题45. 把数组排成最小的数(字符串排序)
1. 题目 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个. 示例 1: 输入: [10,2] 输出: "102"示例 2: 输入: [ ...
- 剑指Offer - 面试题11. 旋转数组的最小数字(二分查找)
1. 题目 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转.输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素.例如,数组 [3,4,5,1,2] 为 [1,2,3,4,5] ...
- 剑指Offer - 面试题3. 数组中重复的数字(哈希)
1. 题目 找出数组中重复的数字. 在一个长度为 n 的数组 nums 里的所有数字都在 0-n-1 的范围内.数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次.请找出数组 ...
- 剑指offer 面试题03. 数组中重复的数字
找出数组中重复的数字. 在一个长度为 n 的数组 nums 里的所有数字都在 0-n-1 的范围内.数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次.请找出数组中任意一个重 ...
最新文章
- 从ThoughtWorks 2017技术雷达看微软技术
- 小米手机又一产品线退场,大步迈向高端市场!
- 编译安装Nginx-1.0.1
- SpringBoot项目的mybatis逆向工程
- ASP.NET 2.0 中 Web 事件
- QT 图片与base64互转
- 程序员必须掌握的十大经典算法
- WPS Office 去广告绿色版(2013.11.13更新)
- 使用Origin绘制折线图(入门)
- cesium-事件监听(获取点击位置的经纬度和高度)
- 【学习点滴】游戏后台开发-tx
- 图论法求解经典面试题:NxN匹马,N个赛道,求最快前M匹马,至少需要几次比赛?
- 关于DSP的中断操作
- Consistent hashing kills tencent2012笔试题附加题
- NYOJ-71 独木舟上的旅行
- BitLocker解锁之后加锁
- Coredump:core与kernel的区别,以及coredump具体指什么?
- java 验证码突然不显示
- 企业物流营销组合模式探讨 (zt)
- 节假日配置、工作日配置