剑指offer.把数字翻译成字符串
题目:
给定一个数字,我们按照如下规则把他翻译成字符串: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.把数字翻译成字符串相关推荐
- 剑指 Offer把数字翻译成字符串
题目描述 给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 "a" ,1 翻译成 "b",--,11 翻译成 "l",--,25 ...
- 剑指offer把数字翻译成字符串
文章目录 一.先介绍一下青蛙跳台阶 二.本题思路及代码 总结 题目: 给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 "a" ,1 翻译成 "b", ...
- leetcode 剑指offer-46.把数字翻译成字符串
原题如下: 剑指offer-46.把数字翻译成字符串 2020年6月9日 每日一题 题解 方法一: 当我们考虑单个数字的时候,就只有一种翻译的结果,重要的是,我们遇到连续两个字母也可以翻译成字母,那么 ...
- 剑指offer46. 把数字翻译成字符串
剑指 Offer 46. 把数字翻译成字符串 难度:中等 给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 "a" ,1 翻译成 "b",--,11 ...
- 剑指Offer46——把数字翻译成字符串
[写在前面]:这道题并不难,但看到题解,发现,自己的代码略显笨拙啊,优秀大佬解题真的高,代码清晰明了,纪念一下差距感(自己递归,回溯还有待加强训练) 原题链接: 剑指 Offer 46. 把数字翻译成 ...
- 把数字翻译成字符串python_剑指offer-46把数字翻译成字符串-python
<剑指offer>python实现系列,全目录 题目描述: 给定一个数字,我们按照如下规则把它翻译为字符串:0翻译成"a",1翻译成"b",--,2 ...
- 【java】剑指offer46_把数字翻译成字符串
题目描述 给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 "a" ,1 翻译成 "b",--,11 翻译成 "l",--,25 ...
- 【LeetCode】剑指 Offer 46. 把数字翻译成字符串
[LeetCode]剑指 Offer 46. 把数字翻译成字符串 文章目录 [LeetCode]剑指 Offer 46. 把数字翻译成字符串 package offer;public class So ...
- 【算法】剑指 Offer 46. 把数字翻译成字符串
1.概述 剑指 Offer 46. 把数字翻译成字符串 给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 "a" ,1 翻译成 "b",--,11 翻 ...
最新文章
- R语言dplyr包移除dataframe数据行实战(Remove Rows):按照条件移除数据行、按照索引移除数据行、删除包含NA值的所有数据行、删除具体列包含NA值的数据行
- 强化学习的自然环境基准
- nrf51822笔记之密码配对过程梳理
- 虚拟机迁移及虚拟机高可用方案
- Tomcat源码解读系列(二)——Tomcat的核心组成和启动过程
- java docx文档解析_带有docx4j的Java Word(.docx)文档
- 一文彻底搞懂Cookie、Session、Token到底是什么
- linux下通过gprs模块拨号上网(转)
- 在iOS项目中,这样才能完美的修改项目名称
- php7 错误处理,PHP7升级-异常错误处理
- LeetCode 30. Substring with Concatenation of All Words
- webpack环境的配置
- cxgrid定位在第一行并显示内置编辑器
- 二进制 计算机编程语言分类
- Win10-Ubuntu双系统
- python字典第一个元素_如何获取python字典中的第一个值
- Typora安装 Pandoc实现导出功能
- C++网络编程(实例)
- APP登录功能的Java服务端开发
- 心跳包(HeartBeat)