题目

https://leetcode.com/problems/decode-ways/

题解

dp 问题,首先用模拟的办法试一下,理清楚状态转移关系。

当走到 i 位置时,i 有两种选择:

  • i 不与 i-1 组合,此时,只要 i 位置不是 0,总的组合方式等于前一个状态的所有组合方式
  • i 与 i-1 组合,此时,只要前一个状态是非组合,且组合之后小于等于 26,则总的组合方式等于前一个非组合的方式数量

看草稿:

class Solution {public int numDecodings(String s) {int L = s.length();int[][] dp = new int[L][2]; // dp[不组合的有效数量][与i-1组合的有效数量]dp[0][0] = s.charAt(0) == '0' ? 0 : 1;// dp[0][1] = 0;for (int i = 1; i < L; i++) {int n1 = s.charAt(i - 1) - '0';int n2 = s.charAt(i) - '0';if (n2 != 0) { // i非0,才能不组合dp[i][0] = dp[i - 1][0] + dp[i - 1][1];}if (n1 != 0 && 10 * n1 + n2 <= 26) { // i-1非0,i可尝试和i-1组合dp[i][1] = dp[i - 1][0];}}return dp[L - 1][0] + dp[L - 1][1];}
}

leetcode 91. Decode Ways | 91. 解码方法(动态规划)相关推荐

  1. 【LeetCode】91. Decode Ways 解题报告(Python)

    [LeetCode]91. Decode Ways 解题报告(Python) 标签(空格分隔): LeetCode 作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fux ...

  2. 【DFS + 记忆化递归 + DP】LeetCode 91. Decode Ways

    LeetCode 91. Decode Ways Solution1:我的答案 还是记录一下,最容易想到的是DFS,但是在第223/238个case上就超时了... class Solution { ...

  3. [LeetCode]91.Decode Ways

    题目 A message containing letters from A-Z is being encoded to numbers using the following mapping: 'A ...

  4. LeetCode 0091.解码方法 - 动态规划+原地滚动(比较高效的算法)

    [LetMeFly]91.解码方法 - 动态规划+原地滚动(比较高效的算法) 力扣题目链接:https://leetcode.cn/problems/decode-ways/ 一条包含字母 A-Z 的 ...

  5. 91 Decode Ways

    91 Decode Ways dp解法 O(1) space class Solution:# @param {string} s# @return {integer}def numDecodings ...

  6. 【重点!DP】LeetCode 639. Decode Ways II

    LeetCode 639. Decode Ways II 参考网址:https://zxi.mytechroad.com/blog/dynamic-programming/leetcode-639-d ...

  7. 125. Leetcode 91. 解码方法 (动态规划- 字符串系列)

    步骤一.确定状态: 确定dp数组及下标含义 dp[i]表示的是到i这个位置的字符串的解码方法 步骤二.推断状态方程: dp[i]的推导会取决于当前s[i]的字符情况以及前一位字符,具体如下: 如果当前 ...

  8. LeetCode 91. Decode Ways

    问题链接 LeetCode 91 题目解析 A~Z对应数字1~26,给出一段数字串,求破译方法数. 解题思路 动态规划.关键在于分类,定义 \(dp[i]\) 为前i个字符的解密方法数,初始化为0. ...

  9. 91 Decode Ways

    为什么我常常对做题产生恐惧,因为可能为了一个不算难的问题不知不觉绕进去2个小时,这显然是不值得的.这题就是如此. 还要注意,java && 的优先级高于||的优先级,而不是同级. pu ...

最新文章

  1. JS日期时间加减实现
  2. linux复盘:mysql基础
  3. QT 中使用 c++ 的指针
  4. [网络安全提高篇] 一〇二.Metasploit技术之基础用法万字详解及防御机理
  5. 必然的宿命,绚然的《暗花》
  6. 十个习惯让你精通新的开发技术
  7. 如何收缩超大的SharePoint_Config数据库
  8. oracle中defined,Oracle:专栏定义(Oracle: column ambigously defined)
  9. 马冬晗学习计划表_一年时间提升学习和工作能力,我做对了这3点
  10. java 新建菜单选项_请完成下列Java程序:创建一个下拉式菜单,菜单项包括3个CheckboxM..._考试资料网...
  11. 手机局域网html,手机遥控电脑开机神器!局域网唤醒App
  12. IDC服务器共享带宽和独享带宽的区别
  13. 语义分割——语义分割数据集的笔记
  14. 基于http live streaming, 使用vlc + mediastreamsegmenter + apache 实现iOS视频直播
  15. 编译FREETYPE:VS2010错误MSB8008
  16. 【单目标优化求解】基于matlab海洋捕食者算法(MPA)求解单目标问题【含Matlab源码 478期】
  17. unix 与 linux 操作系统 介绍
  18. 图神经网络-图与图学习笔记-中
  19. 如何批量将 webp 格式的图片转换为 jpg 格式
  20. 服务器驱动用什么工具_服务器是做什么用的,具体有什么作用,为什么机房要用服务器?...

热门文章

  1. CH - 0104 起床困难综合症(位运算+贪心)
  2. php滚动公告源码,JavaScript_jquery垂直公告滚动实现代码,复制代码 代码如下: !DOCTYPE - phpStudy...
  3. UVA211 TheDomino Effect 多米诺效应
  4. 排序算法-01冒泡排序(Python实现)
  5. [zjoi2015]幻想乡战略游戏
  6. 参加浙江中医药大学第十一届程序设计竞赛(ACM赛制)的总结
  7. VIM-配置-.vimrc
  8. SQL Server date、datetime、smalldate区别
  9. Ring0和Ring3权限级
  10. TCP/IP协议精华指南pdf发布