文章目录

  • 题目
  • 基本思想

题目

给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 “a” ,1 翻译成 “b”,……,11 翻译成 “l”,……,25 翻译成 “z”。一个数字可能有多个翻译。请编程实现一个函数,用来计算一个数字有多少种不同的翻译方法。

示例 1:

输入: 12258
输出: 5
解释: 12258有5种不同的翻译,分别是"bccfi", "bwfi", "bczi", "mcfi"和"mzi"

提示:

0 <= num < 2^31

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/ba-shu-zi-fan-yi-cheng-zi-fu-chuan-lcof
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

基本思想

看了评论才发现这是个青蛙跳台阶的题目,只不过在跳两阶台阶时有些限制
青蛙跳台阶,递归

class Solution {public:int translateNum(int num) {string str = to_string(num);return fun(str);}int fun(string str){if(str.length() < 2)return 1;else if(str.length() == 2){int n = atoi(str.c_str());if(n >= 10 && n < 26)return 2;elsereturn 1;}else{int front = atoi(str.substr(0, 2).c_str());if(front >= 10 && front < 26)return fun(str.substr(1, str.length() - 1)) + fun(str.substr(2, str.length() - 2));else return fun(str.substr(1, str.length() - 1));}}
};

动态规划

  • dp[i]:以当前字符结束有多少种翻译方法
  • 状态:字符
  • 选择:当前字符和前面一个字符能否合并
  • 转移方程:能合并dp[i] = dp[i - 1] + dp[i - 2];不能合并dp[i] = dp[i - 1]
class Solution {public:int translateNum(int num) {string str = to_string(num);return fun(str);}int fun(string str){//动态规划vector<int> dp(str.length() + 1);dp[0] = 1;dp[1] = 1;for(int i = 2; i <= str.length(); ++i){int cur = (str[i - 2] - '0') * 10 + str[i - 1] - '0';dp[i] = dp[i - 1];if(cur > 9 && cur < 26)dp[i] += dp[i - 2];//cout << dp[i] << endl;}return dp[str.length()];}
};

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    链接:https://leetcode-cn.com/problems/ba-shu-zi-fan-yi-cheng-zi-fu-chuan-lcof/ 题解:https://leetcode-cn. ...

最新文章

  1. 路由器NAT网络地址转换
  2. k8s minikube启动时指定镜像源的启动方式
  3. 深入理解javascript原型和闭包(9)——简述【执行上下文】下
  4. .NET平台下几种SOCKET模型的简要性能供参考
  5. nvidia-smi 命令详解
  6. 【git 基础】detached HEAD意义详解 (非顶端分支的理解)
  7. INTERSPEECH2020 语音情感分析论文之我见
  8. Direct2D教程(十二)图层
  9. asp.net的10个提升性能或扩展性的秘密(二)
  10. Eucalyptus云服务平台
  11. C语言程序的基本,C语言编程基础知识汇总学习,适合初学者!
  12. 机场安检 matlab实现,机场安检过程改进的方案.doc
  13. flyaway mysql_keycloak搭配mysql
  14. wim工具扫描linux磁盘,WimTool Pro(WIM映像处理工具)
  15. Unirech腾讯云代充-关于腾讯云国际版云服务器实例调整配置常见问题
  16. 《苏菲的世界》——读书笔记
  17. Prometheus由于时间不同步导致数据不显示
  18. PyQt5-显示不同类型的消息对话框(提示对话框)
  19. SimPoint: 抽样创建模拟点减少spec2006运行时间
  20. VolumeDeform: Real-time Volumetric Non-rigid Reconstruction 笔记

热门文章

  1. 3D建模大佬如何制作出惊艳四方的游戏建模,醍醐灌顶!
  2. 时间序列 传感器_时间序列数据库如何帮助理解传感器
  3. Pwnable之[Toddler's Bottle](三)--asm
  4. mysql 实现类似 postgresql 数据库的 generate_series 函数
  5. java开发以太坊应用的库ethereumj
  6. 解压.zip.gz文件
  7. 2个月月活突破1亿,增速碾压抖音,出道即封神的ChatGPT,现在怎么样了?ChatGPT它会干掉测试?
  8. php laravel框架失败_PHP Laravel框架问题记录
  9. 让计算机开口说话教案,会说话的安全标志中班教案
  10. ARCMAP ARCPY 批量统一修改多图层样式,自动化批量导出TIF至图片,并自动修改图片标题 ARCGIS