题目描述:给定一个数字,按照如下规则翻译成字符串: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版+解析:把数字翻译成字符串相关推荐

  1. 剑指offer——面试题46:求1+2+...+n

    剑指offer--面试题46:求1+2+-+n 题目描述 求1+2+3+-+n,要求不能使用乘除法.for.while.if.else.switch.case等关键字及条件判断语句(A?B:C). 个 ...

  2. 剑指offer面试题[8]-旋转数组的最小数字

    题目描述 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转. 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素. 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个 ...

  3. [剑指offer]面试题42:翻转单词顺序 VS左旋转字符串

    面试题42:翻转单词顺序 VS左旋转字符串 题目一:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变.为简单起见,标点符号和普通字母一样处理.例如输入字符串"I am a st ...

  4. 剑指offer全套题解:Python版

    1. 二叉树的镜像 class Solution:def invertTree(self, root: Optional[TreeNode]) -> Optional[TreeNode]:if ...

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

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

  6. [剑指offer]面试题第[67]题[Leetcode][JAVA][第8题] 字符串转换整数 (atoi)[字符串]

    [问题描述] 请你来实现一个 atoi 函数,使其能将字符串转换成整数.首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止.接下来的转化规则如下:如果第一个非空字符为正或者 ...

  7. 剑指Offer - 面试题45. 把数组排成最小的数(字符串排序)

    1. 题目 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个. 示例 1: 输入: [10,2] 输出: "102"示例 2: 输入: [ ...

  8. 剑指Offer - 面试题11. 旋转数组的最小数字(二分查找)

    1. 题目 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转.输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素.例如,数组 [3,4,5,1,2] 为 [1,2,3,4,5] ...

  9. 剑指Offer - 面试题3. 数组中重复的数字(哈希)

    1. 题目 找出数组中重复的数字. 在一个长度为 n 的数组 nums 里的所有数字都在 0-n-1 的范围内.数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次.请找出数组 ...

  10. 剑指offer 面试题03. 数组中重复的数字

    找出数组中重复的数字. 在一个长度为 n 的数组 nums 里的所有数字都在 0-n-1 的范围内.数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次.请找出数组中任意一个重 ...

最新文章

  1. 从ThoughtWorks 2017技术雷达看微软技术
  2. 小米手机又一产品线退场,大步迈向高端市场!
  3. 编译安装Nginx-1.0.1
  4. SpringBoot项目的mybatis逆向工程
  5. ASP.NET 2.0 中 Web 事件
  6. QT 图片与base64互转
  7. 程序员必须掌握的十大经典算法
  8. WPS Office 去广告绿色版(2013.11.13更新)
  9. 使用Origin绘制折线图(入门)
  10. cesium-事件监听(获取点击位置的经纬度和高度)
  11. 【学习点滴】游戏后台开发-tx
  12. 图论法求解经典面试题:NxN匹马,N个赛道,求最快前M匹马,至少需要几次比赛?
  13. 关于DSP的中断操作
  14. Consistent hashing kills tencent2012笔试题附加题
  15. NYOJ-71 独木舟上的旅行
  16. BitLocker解锁之后加锁
  17. Coredump:core与kernel的区别,以及coredump具体指什么?
  18. java 验证码突然不显示
  19. 企业物流营销组合模式探讨 (zt)
  20. 节假日配置、工作日配置

热门文章

  1. 通过简单脚本批量取消新浪微博的关注
  2. 2019-11-29-win10-uwp-如何开始写-uwp-程序
  3. 应用之星:在线手机应用开发平台 不用搭建环境
  4. 自用tomcat、springboot、rust发布脚本
  5. 【高德地图API】Web地图开发系列(一)
  6. pythonBBS问答社区程序源码加文档加说明
  7. 谈谈Google AdSense以外的国外优秀广告联盟
  8. 计算机的基本知识理论,计算机基本理论基础知识总汇
  9. 开始混CSDN了,大器晚成……
  10. 信息检索1.2--几个实用的限定词,site title URL