题目:

给定一个数字,我们按照如下规则把他翻译成字符串:0翻译成a,1翻译成b……11翻译成l,……25翻译成z,一个数有多种翻译方法,可以把一个数里面的数字看作一位,也可以是两位。

思路:
这个题最麻烦的就是有几种不同的组合方式,最后要算总和。存在多个子问题,并且在分析子问题的时候子问题还可能出现重复计算的可能。所以我们把问题分解成无数个子问题就可以用到递归的算法,并且我们遍历数字的时候我们可以从右边向左边遍历,这样可以防止出现重复计算的情况。在递归的的过程中我们要确定递归的规则,我们定义函数f(i)表示从第i位数字开始的不同翻译的数目,那么f(i)=f(i+1)+g(i,i+1)*f(i+2)。

代码实现:

int translateNum(int num) {int* nums = (int*)malloc(sizeof(int) * 10);int* dp = (int*)malloc(sizeof(int) * 10);int numsSize = 0;while (num > 9) {nums[numsSize++] = num % 10;num /= 10;}nums[numsSize++] = num;for (int i = 0; i < numsSize / 2; i++) {int tmp = nums[i];nums[i] = nums[numsSize - i - 1];nums[numsSize - i - 1] = tmp;}dp[0] = 1;dp[1] = (nums[0] * 10 + nums[1] < 26 && nums[0] * 10 + nums[1] > 9) ? dp[0] + 1 : dp[0];for (int i = 2; i < numsSize; i++) {dp[i] = (nums[i - 1] * 10 + nums[i] < 26 && nums[i - 1] * 10 + nums[i] > 9) ? dp[i - 2] + dp[i - 1] : dp[i - 1];}return dp[numsSize - 1];
}

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

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

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

  2. 剑指offer把数字翻译成字符串

    文章目录 一.先介绍一下青蛙跳台阶 二.本题思路及代码 总结 题目: 给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 "a" ,1 翻译成 "b", ...

  3. leetcode 剑指offer-46.把数字翻译成字符串

    原题如下: 剑指offer-46.把数字翻译成字符串 2020年6月9日 每日一题 题解 方法一: 当我们考虑单个数字的时候,就只有一种翻译的结果,重要的是,我们遇到连续两个字母也可以翻译成字母,那么 ...

  4. 剑指offer46. 把数字翻译成字符串

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

  5. 剑指Offer46——把数字翻译成字符串

    [写在前面]:这道题并不难,但看到题解,发现,自己的代码略显笨拙啊,优秀大佬解题真的高,代码清晰明了,纪念一下差距感(自己递归,回溯还有待加强训练) 原题链接: 剑指 Offer 46. 把数字翻译成 ...

  6. 把数字翻译成字符串python_剑指offer-46把数字翻译成字符串-python

    <剑指offer>python实现系列,全目录 题目描述: 给定一个数字,我们按照如下规则把它翻译为字符串:0翻译成"a",1翻译成"b",--,2 ...

  7. 【java】剑指offer46_把数字翻译成字符串

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

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

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

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

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

最新文章

  1. R语言dplyr包移除dataframe数据行实战(Remove Rows):按照条件移除数据行、按照索引移除数据行、删除包含NA值的所有数据行、删除具体列包含NA值的数据行
  2. 强化学习的自然环境基准
  3. nrf51822笔记之密码配对过程梳理
  4. 虚拟机迁移及虚拟机高可用方案
  5. Tomcat源码解读系列(二)——Tomcat的核心组成和启动过程
  6. java docx文档解析_带有docx4j的Java Word(.docx)文档
  7. 一文彻底搞懂Cookie、Session、Token到底是什么
  8. linux下通过gprs模块拨号上网(转)
  9. 在iOS项目中,这样才能完美的修改项目名称
  10. php7 错误处理,PHP7升级-异常错误处理
  11. LeetCode 30. Substring with Concatenation of All Words
  12. webpack环境的配置
  13. cxgrid定位在第一行并显示内置编辑器
  14. 二进制 计算机编程语言分类
  15. Win10-Ubuntu双系统
  16. python字典第一个元素_如何获取python字典中的第一个值
  17. Typora安装 Pandoc实现导出功能
  18. C++网络编程(实例)
  19. APP登录功能的Java服务端开发
  20. 心跳包(HeartBeat)

热门文章

  1. SAP HANA:下一代开放应用平台
  2. 临时邮箱如何申请注册,申请临时邮箱后有什么好处?
  3. 电量监测程序 c语言,基于单片机的电量检测系统设计方案.doc
  4. Java版本的有趣代号
  5. [记录] JavaScript 中的正则表达式
  6. Docker 镜像管理
  7. 老铁啊,我同你讲, 这年头不会点 Git 真不行!!!
  8. 在监控落地的路上,助你一臂之力
  9. win10宽带连接720错误 解决办法
  10. TS报错Error: xxx doesn‘t exist on type ‘xxx’