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

public class Solution {public int numDecodings(String s) {// Start typing your Java solution below// DO NOT write main() functionint len = s.length();if (len == 0) return 0;int[] dp = new int[len];for (int i = 0; i < len; i++) {int way = 0;if (s.charAt(i) != '0') {if (i-1 >= 0) {way += dp[i-1];}else {way += 1;}}if (i-1 >= 0 && (s.charAt(i-1) == '1' || (s.charAt(i-1) == '2' && s.charAt(i) <= '6'))) {if (i-2 >= 0) {way += dp[i-2];}else {way+= 1;}}dp[i] = way;}return dp[len-1];}
}

第二刷,做繁琐了

class Solution {
public:vector<int> ways;int numDecodings(string s) {if (s.size() == 0)return 0;ways.clear();ways.resize(s.size() + 1);for (int i = 0; i < ways.size(); i++){ways[i] = -1;}return numDecodingsRe(s, 0);}int numDecodingsRe(const string &s, int start){if (ways[start] != -1){return ways[start];}if (start == s.size()){ways[start] = 1;return 1;}if (s[start] < '1' || s[start] > '9'){ways[start] = 0;return 0;}if (start == s.size() - 1){ways[start] = 1;return 1;}if (s[start] == '1'){ways[start] = numDecodingsRe(s, start + 1) + numDecodingsRe(s, start + 2);return ways[start];}if (s[start] == '2' && s[start + 1] <= '6'){ways[start] = numDecodingsRe(s, start + 1) + numDecodingsRe(s, start + 2);return ways[start];}ways[start] = numDecodingsRe(s, start + 1);return ways[start];}
};

  

转载于:https://www.cnblogs.com/lautsie/p/3251130.html

[leetcode]Decode Ways相关推荐

  1. [LeetCode] Decode Ways

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

  2. LeetCode Decode Ways(动态规划)

    题意:编码方式为a->1,...z->26,给出编码后的数字字符串,问有多种编码方式 思路:用dp(i)表示从第1个字符到第i个字符时的编码方式,因为编码一个字符时,只能是0-9,编码两个 ...

  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. 【DFS + 记忆化递归 + DP】LeetCode 91. Decode Ways

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

  6. [LeetCode]91.Decode Ways

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

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

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

  8. Decode Ways leetcode java

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

  9. 91 Decode Ways

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

最新文章

  1. 最大匹配、最小顶点覆盖、最大独立集、最小路径覆盖(转)
  2. spring boot apollo demo
  3. session 的 源码
  4. Intel SDM Chapter 10: APIC
  5. centos+gitlab+mysql_centos7安装配置gitlab(使用外部nginx)
  6. MySQL学习记录 (一) ----- 有关数据库的基本概念和MySQL常用命令
  7. delphi 的GetTickCount计时用法缺陷及管制
  8. CSU 2124智慧树(建图+BFS)
  9. linux 中文字体 推荐,适合阅读的中文字体
  10. 基于Java毕业设计大学生旅游拼团网站源码+系统+mysql+lw文档+部署软件
  11. cocos creator实现读取白鹭movieClip组件(尝试)
  12. php get month,JavaScript从Date对象返回月份 (0 ~ 11)的方法getMonth()
  13. 【Redux】异步action与同步action
  14. 中国驾照在美国各州开车的规定
  15. Nexmo 短信平台接口 遇到的坑
  16. CPU-Z查看内存条信息
  17. LaTeX--1--了解LaTeX
  18. 错题本——数据结构(线性表)
  19. python again语句_初识Python05--if语句
  20. 超越“双十一”—— ebay百万TPS支付账务系统的设计与实现

热门文章

  1. 二、数据预处理——缺失值处理
  2. LintCode MySQL 1928. 网课上课情况分析 I
  3. 天池 在线编程 中位数
  4. LeetCode 978. 最长湍流子数组(DP)
  5. mysq命令行导出sql_mysql 命令行导入导出 sql
  6. 编辑器eslint格式_vscode保存代码,自动按照eslint规范格式化代码设置
  7. 编程竞赛控制系统(PC2)使用说明书
  8. 推荐中的attention有什么作用?
  9. 我的新书《Spring Cloud实战》预告
  10. 美团酒店直连产品数据一致性演进