链接: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. 把数字翻译成字符串相关推荐

  1. leetcode面试题46. 把数字翻译成字符串

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

  2. leetcode刷题-面试题46. 把数字翻译成字符串

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

  3. 把数字翻译成字符串python_LeetCode 面试题46. 把数字翻译成字符串 | Python

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

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

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

  5. 【剑指offer】面试题46. 把数字翻译成字符串(java)

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

  6. [剑指 offer] -- 动态规划-- 面试题46. 把数字翻译成字符串

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

  7. leetcode面试题46. 把数字翻译成字符串/典型的青蛙跳台阶题目(递归),动态规划

    文章目录 题目 基本思想 题目 给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 "a" ,1 翻译成 "b",--,11 翻译成 "l&q ...

  8. 力扣 面试题46. 把数字翻译成字符串 dp

    https://leetcode-cn.com/problems/ba-shu-zi-fan-yi-cheng-zi-fu-chuan-lcof/ 思路:为了方便,我们把输入转换成一个字符串,并且下标 ...

  9. leetcode 题库46. 把数字翻译成字符串

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

最新文章

  1. 入机器学习大坑,需要什么样的数学水平?
  2. 【项目实战】:基于python的p2p运营商数据信息的特征挖掘
  3. 一口气说出 4 种分布式一致性 Session 实现方式,面试杠杠的~
  4. Ubuntu 16.04安装 sogou 遗留下的问题
  5. 猎豹网matlab视频百度云,猎豹网校C++ Primer初级全套视频教程
  6. 关于udelay(); mdelay(); ndelay(); msleep();
  7. 算法与数据结构1800题 之 栈和队列
  8. SQL Server权限设置
  9. 盈利模型的内容都有哪些?
  10. 春晚亲民,快手上行:探秘春晚红包的另一种打开方式
  11. visual studio 11开发Win8模板
  12. 开课吧课堂之何时调用构造函数
  13. 在infoWindow中显示Geocode server(地理编码服务)
  14. 一、IOC和DI的概念
  15. JAVA匿名实现多线程
  16. 《当程序员的那些狗日日子》二
  17. android ibeacon模拟器,未使用信标模拟器检测到iBeacon
  18. netty报错LEAK: ByteBuf.release() was not called before it‘s garbage-collected.的解决方法
  19. AWS为什么能成功?
  20. 【转载】手机快充的核心模块:ChargePump

热门文章

  1. CVPR 2018 最具创意论文 TOP10
  2. Fliptile 翻格子游戏[Usaco2007 Open]
  3. 发展光伏产业 破解大气污染之困
  4. jQuery补充及Django基本使用_Day18
  5. 计科1高雨妍作业(2)
  6. Spring4.0编程式定时任务配置
  7. Maven 环境快速搭建
  8. Python selenium chrome 环境配置
  9. 程序员专属段子集锦 7/10
  10. 常见解压缩软件与其zip格式