前言:这个题如果没有做过 我感觉要想到状态转移方程还是有点难度的。

确定状态

最后一步:实际上我个人认为这个题的难点就是最后一步要理解好。每次新增一个数字,我们其实都要考虑

1.新增的一个数字单独作用 增加多少种可能

2.新增的一个数字与前面的一个数字加起来一起作用 增加多少种可能

因此 dp[i]代表 到第i个数字有多少种decode ways

状态转移方程

dp[i] = 0

+     dp[i-1]  {  1<=Integer.valueOf(s.substring(i-1,i)) <=9}

+  dp[i-2]    {10<=Integer.valueOf(s.substring(i-2,i)) <=26}

初始条件和边界条件

dp[0]=1;  这里的dp[0]=1是为了计算dp[2]的方便

计算顺序

dp[1] ..d[2].....dp[n]

代码

class Solution {public int numDecodings(String s) {//corner caseif(s==null||s.length()==0)return 0;int n = s.length();int []dp = new int[n+1];//初始条件dp[0]=1;dp[1]=s.charAt(0)=='0' ? 0:1;//计算顺序与状态转移方程for(int i=2;i<=n;i++){String firstchar = s.substring(i-1,i);String secondchar = s.substring(i-2,i);int value1 = Integer.valueOf(firstchar);int value2 = Integer.valueOf(secondchar);if(1<=value1&&value1<=9){dp[i]+=dp[i-1];}if(10<=value2&&value2<=26){dp[i]+=dp[i-2];}}return dp[n];}
}

动态规划实战9 leetcode-91. Decode Ways相关推荐

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

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

  2. [LeetCode]91.Decode Ways

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

  3. LeetCode 91. Decode Ways

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

  4. leetcode 91. Decode Ways | 91. 解码方法(动态规划)

    题目 https://leetcode.com/problems/decode-ways/ 题解 dp 问题,首先用模拟的办法试一下,理清楚状态转移关系. 当走到 i 位置时,i 有两种选择: i 不 ...

  5. LeetCode 91 Decode Ways(编码方式)(*)

    原文 A message containing letters from A-Z is being encoded to numbers the following mapping: 'A' -> ...

  6. [dp] LeetCode 91. Decode Ways

    输入:一个字符串,只包含0-9的字符. 输出:解码种类 规则:有一种信息映射规则 A->1,B->2-Z->26. 例如输入'1',只能解码为A. 输入'12',可以解码为'AB', ...

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

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

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

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

  9. 91 Decode Ways

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

  10. 91 Decode Ways

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

最新文章

  1. 选笔记本选择CPU风扇散热的重要性
  2. 在python中terminal中建立mysql数据库,无法再models.py 文件中建立数据库信息
  3. 徐磊(Devops):一名写了十几年代码但还没写够的程序员
  4. NuStore使用说明
  5. TensorFlow神经网络(四)手写数字识别
  6. 按季度分类汇总_1分钟实现:按某列内容分类汇总,分页打印 Excel 表格
  7. C++ gdb core调试 崩溃日志 都是问号??
  8. 对lua 实现面向对象的理解
  9. 完美者常用软件光盘2008
  10. 在Fedora 28上安装LimeSurvey CE
  11. Freeswitch 常用功能命令及配置详解2021-06-06
  12. 软件测试背景目的要点概述
  13. gitlab鉴权失败
  14. 短消息类新旧服务代码对应表
  15. html价格划掉的样式,用css布局价格划线_价钱中划线_价格中间贯穿删除线效果样式布局...
  16. 06 Redis中BigKey、HotKey的发现与处理
  17. shell脚本自动更新ca证书
  18. picsart下载_照片美易art_照片美易art官方下载_照片美易art官方正版苹果版_好趣手游网...
  19. asp毕业设计——基于asp+access的新闻发布系统设计与实现(毕业论文+程序源码)——新闻发布系统
  20. 通过RSRP和SINR判断LTE信号质量

热门文章

  1. 追忆我的2008-养成做笔记的习惯
  2. java重命名文件(附道客巴巴文档下载方法)
  3. c# 代码编辑器 支持多种语言,支持多种编程语言与系统的跨平台代码编辑器——微软 Visual Studio Code...
  4. java请求url拼接xml_java访问一个URL,会返回给你一个XML格式的数据,该怎么实现?...
  5. vue插入富文本编辑器(支持视频和图片的上传)
  6. 应用Mongoose开发MongoDB(1)数据库连接
  7. IBatisNet -- 保护你的配置文件及映射文件信息
  8. 4种复制文件的方式性能比较
  9. cakephp2.X教程第一部分(基于cakephp1.3.4在线教程的改编)
  10. \r\n的来历与用法