题意:编码方式为a->1,...z->26,给出编码后的数字字符串,问有多种编码方式

思路:用dp(i)表示从第1个字符到第i个字符时的编码方式,因为编码一个字符时,只能是0-9,编码两个字符时,只能为10-26

所以有dp(i) = dp(i-1) + dp(i-2) ,其中如果第i-1个字符不是0-9之间的数,则dp(i-1)=0,如果i-2到i之间的字符不是10-26,则dp(i-2)=0

代码如下:

public class Solution
{public int numDecodings(String s){if (s.length() == 0) return 0;int[] dp = new int[s.length() + 1];dp[0] = 1;for (int i = 1; i <= s.length(); i++) {if (i - 1 >= 0) {int num = Integer.parseInt(s.substring(i - 1, i));if (num >= 1 && num <= 9) dp[i] += dp[i - 1];}if (i - 2 >= 0) {int num = Integer.parseInt(s.substring(i - 2, i));if (num >= 10 && num <= 26) dp[i] += dp[i - 2];}}return dp[s.length()];}
}

LeetCode Decode Ways(动态规划)相关推荐

  1. [LeetCode] Decode Ways

    (Version 0.0) Decode Ways这道题从原理上说是一个比较简单的一维DP题目,用一个一维数组的元素dp[i] (i >= 1)来记录从头开始长度为i的substring有多少种 ...

  2. [leetcode]Decode Ways

    动态规划.要注意way+=dp[i-1]或dp[i-2]以及way+=1的条件.我看有的人把数组命名为count的. public class Solution {public int numDeco ...

  3. LeetCode Decode Ways

    有点意思的题目.用动态规划能够O(n)求解出来:a[i]代表子字符串string(0,i)的可能解码方式,a[i] = {a[i-1] or a[i-1]+a[i-2]}. 意思是假设string(i ...

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

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

  5. Decode Ways leetcode java

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

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

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

  7. [LeetCode]91.Decode Ways

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

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

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

  9. [LeetCode-Algorithms-91] Decode Ways (2017.10.19-WEEK7)

    题目链接:Decode Ways 题目描述:A message containing letters from A-Z is being encoded to numbers using the fo ...

最新文章

  1. bash脚本【一】——批量处理文件
  2. 多个Google账户合并(共享)数据
  3. java客户端服务器代码_Java Socket通信 客户端服务器端基本代码
  4. boost::test模块测试可变参数样本元素支持和数据集定义的移动语义
  5. CodeForces - 1517D Explorer Space(dp)
  6. DIY人脸跟踪电风扇送女朋友(4)
  7. 安装好机器学习环境的虚拟机_虚拟环境之外的数据科学是弄乱机器的好方法
  8. Requests库的主要方法:requests.request为requests.get和requests.post两个的汇总,只是需要传方法...
  9. nodejs和Vue和Idea
  10. python浮点型数据怎么显示为图片_python数字图像处理(4):图像数据类型及颜色空间转换...
  11. C / C++ 之整体知识总结,点进来,不后悔!
  12. 7的整除特征 三位一截_「每周一课」数字和除号握手言和,来攻克整除问题
  13. MySQL数据库优化的几种方式
  14. 第七篇,LQR、MPC工程化总结
  15. 考研408院校合集以及学科评估
  16. 如何制作简单的日历html5,js+html制作简单日历的方法
  17. linux网页打开慢的解决方法,解决Ubuntu浏览网页速度慢的问题
  18. Vue中如何关闭语法检查
  19. kubectl logs和docker logs输出日志不同的问题
  20. 关于Axure的基本框架

热门文章

  1. JS判断是否是移动设备进行http链接重定向
  2. N-gram统计语言模型(总结)
  3. CLR via C#(17)--接口
  4. 从十个方面提升SharePoint网站性能
  5. J2SE学习标准篇(转载)
  6. python面试题及答案-Python 45道基本面试题及答案 (新手非常有用)
  7. java和python哪个好就业2020-java和python哪个的前途更好?
  8. 用python画皮卡丘画法-利用Python绘制萌萌哒的皮卡丘
  9. winpython使用教程-winpython是什么
  10. python介绍和用途-Python字典简介以及用法详解