面试题46. 把数字翻译成字符串
链接:https://leetcode-cn.com/problems/ba-shu-zi-fan-yi-cheng-zi-fu-chuan-lcof/
题解:https://leetcode-cn.com/problems/ba-shu-zi-fan-yi-cheng-zi-fu-chuan-lcof/solution/jiu-ying-sou-ji-bai-shuang-bai-liao-by-robinzhu-z/
(1)当前数字前进1位情况
(2)当前数字前进2位情况,[1]0 <= 两位数字<=25 [2] 十位不能位0
(3)终止条件就是,超过字符串长度返回1
class Solution {
public:std::unordered_map<int, int> visited;int translateNum(int num) {return dfs(num);}int dfs(int num) {if(num < 10) {return 1;}if(visited.find(num) != visited.end()) {return visited[num];}int count =0;count+= dfs(num/10);if(num%100 <= 25 && num%100 != num%10) {count += dfs(num/100);}visited[num] = count;return count;}
};
class Solution {
public:// 记忆化搜索std::unordered_map<std::string, int> visited;int translateNum(int num) {// 将数字转为字符串std::string num_str = to_string(num);// 从begin开始遍历int begin = 0;return find_count(num_str, begin);}int find_count(const std::string& num_str, int begin) {// 遍历到字符串到末尾if(begin >= num_str.size()) {return 1;}// 判断num_str[begin, num_str.size()]这段长度字符串,是否记录过if(visited.find(num_str.substr(begin, num_str.size())) != visited.end()) {return visited[num_str.substr(begin, num_str.size())];}// 求的增加一个长度得到的情况int count = find_count(num_str, begin+1);// 判断是否可以跳两个长度,十位不能为0if(num_str[begin] != '0' && begin+1 < num_str.size() && ((num_str[begin]-'0')*10 + (num_str[begin+1]-'0')) <= 25) {count += find_count(num_str, begin+2);}// 记录num_str[begin, num_str.size()]这段长度字符串,可以组成的情况visited[num_str.substr(begin, num_str.size())] = count;return count;}
};
面试题46. 把数字翻译成字符串相关推荐
- leetcode面试题46. 把数字翻译成字符串
leetcode面试题46. 把数字翻译成字符串 给定一个数字,我们按照如下规则把它翻译为字符串:**0 翻译成 "a" ,1 翻译成 "b",--,11 翻译 ...
- leetcode刷题-面试题46. 把数字翻译成字符串
面试题46. 把数字翻译成字符串 给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 "a" ,1 翻译成 "b",--,11 翻译成 "l& ...
- 把数字翻译成字符串python_LeetCode 面试题46. 把数字翻译成字符串 | Python
面试题46. 把数字翻译成字符串 题目 给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 "a" ,1 翻译成 "b",--,11 翻译成 " ...
- 剑指Offer - 面试题46. 把数字翻译成字符串(DP)
1. 题目 给定一个数字,我们按照如下规则把它翻译为字符串: 0 翻译成 "a" , 1 翻译成 "b",--, 11 翻译成 "l",-- ...
- 【剑指offer】面试题46. 把数字翻译成字符串(java)
给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 "a" ,1 翻译成 "b",--,11 翻译成 "l",--,25 翻译成 & ...
- [剑指 offer] -- 动态规划-- 面试题46. 把数字翻译成字符串
1 题目描述 给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 "a" ,1 翻译成 "b",--,11 翻译成 "l",--,2 ...
- leetcode面试题46. 把数字翻译成字符串/典型的青蛙跳台阶题目(递归),动态规划
文章目录 题目 基本思想 题目 给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 "a" ,1 翻译成 "b",--,11 翻译成 "l&q ...
- 力扣 面试题46. 把数字翻译成字符串 dp
https://leetcode-cn.com/problems/ba-shu-zi-fan-yi-cheng-zi-fu-chuan-lcof/ 思路:为了方便,我们把输入转换成一个字符串,并且下标 ...
- leetcode 题库46. 把数字翻译成字符串
面试题46. 把数字翻译成字符串 给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 "a" ,1 翻译成 "b",--,11 翻译成 "l& ...
最新文章
- 入机器学习大坑,需要什么样的数学水平?
- 【项目实战】:基于python的p2p运营商数据信息的特征挖掘
- 一口气说出 4 种分布式一致性 Session 实现方式,面试杠杠的~
- Ubuntu 16.04安装 sogou 遗留下的问题
- 猎豹网matlab视频百度云,猎豹网校C++ Primer初级全套视频教程
- 关于udelay(); mdelay(); ndelay(); msleep();
- 算法与数据结构1800题 之 栈和队列
- SQL Server权限设置
- 盈利模型的内容都有哪些?
- 春晚亲民,快手上行:探秘春晚红包的另一种打开方式
- visual studio 11开发Win8模板
- 开课吧课堂之何时调用构造函数
- 在infoWindow中显示Geocode server(地理编码服务)
- 一、IOC和DI的概念
- JAVA匿名实现多线程
- 《当程序员的那些狗日日子》二
- android ibeacon模拟器,未使用信标模拟器检测到iBeacon
- netty报错LEAK: ByteBuf.release() was not called before it‘s garbage-collected.的解决方法
- AWS为什么能成功?
- 【转载】手机快充的核心模块:ChargePump