[leetcode]Decode Ways
动态规划。要注意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相关推荐
- [LeetCode] Decode Ways
(Version 0.0) Decode Ways这道题从原理上说是一个比较简单的一维DP题目,用一个一维数组的元素dp[i] (i >= 1)来记录从头开始长度为i的substring有多少种 ...
- LeetCode Decode Ways(动态规划)
题意:编码方式为a->1,...z->26,给出编码后的数字字符串,问有多种编码方式 思路:用dp(i)表示从第1个字符到第i个字符时的编码方式,因为编码一个字符时,只能是0-9,编码两个 ...
- LeetCode Decode Ways
有点意思的题目.用动态规划能够O(n)求解出来:a[i]代表子字符串string(0,i)的可能解码方式,a[i] = {a[i-1] or a[i-1]+a[i-2]}. 意思是假设string(i ...
- 【重点!DP】LeetCode 639. Decode Ways II
LeetCode 639. Decode Ways II 参考网址:https://zxi.mytechroad.com/blog/dynamic-programming/leetcode-639-d ...
- 【DFS + 记忆化递归 + DP】LeetCode 91. Decode Ways
LeetCode 91. Decode Ways Solution1:我的答案 还是记录一下,最容易想到的是DFS,但是在第223/238个case上就超时了... class Solution { ...
- [LeetCode]91.Decode Ways
题目 A message containing letters from A-Z is being encoded to numbers using the following mapping: 'A ...
- 【LeetCode】91. Decode Ways 解题报告(Python)
[LeetCode]91. Decode Ways 解题报告(Python) 标签(空格分隔): LeetCode 作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fux ...
- Decode Ways leetcode java
题目: A message containing letters from A-Z is being encoded to numbers using the following mapping: ' ...
- 91 Decode Ways
为什么我常常对做题产生恐惧,因为可能为了一个不算难的问题不知不觉绕进去2个小时,这显然是不值得的.这题就是如此. 还要注意,java && 的优先级高于||的优先级,而不是同级. pu ...
最新文章
- 最大匹配、最小顶点覆盖、最大独立集、最小路径覆盖(转)
- spring boot apollo demo
- session 的 源码
- Intel SDM Chapter 10: APIC
- centos+gitlab+mysql_centos7安装配置gitlab(使用外部nginx)
- MySQL学习记录 (一) ----- 有关数据库的基本概念和MySQL常用命令
- delphi 的GetTickCount计时用法缺陷及管制
- CSU 2124智慧树(建图+BFS)
- linux 中文字体 推荐,适合阅读的中文字体
- 基于Java毕业设计大学生旅游拼团网站源码+系统+mysql+lw文档+部署软件
- cocos creator实现读取白鹭movieClip组件(尝试)
- php get month,JavaScript从Date对象返回月份 (0 ~ 11)的方法getMonth()
- 【Redux】异步action与同步action
- 中国驾照在美国各州开车的规定
- Nexmo 短信平台接口 遇到的坑
- CPU-Z查看内存条信息
- LaTeX--1--了解LaTeX
- 错题本——数据结构(线性表)
- python again语句_初识Python05--if语句
- 超越“双十一”—— ebay百万TPS支付账务系统的设计与实现