LeetCode 91.解码方法
LeetCode 91.解码方法
ways:
s[i] = 0 : if(s[i-1] == 1 || s[i-1] == 2) :s[i]只能和前一位绑定在一起,此时dp[i] = dp[i-2];else return 0 :无意义
s[i] != 0:if(s[i-1] ==1 ) : s[i]能和s[i-1]组合也能拆开,dp[i] = dp[i-1]+dp[i-2];else if(s[i-1] == 2 && s[i]<=6) : 也能组合,也能拆开,dp[i] = dp[i-1]+dp[i-2];else : 不能组合,只能拆开,dp[i] = dp[i-1];
eg:
2 | 2 | 0 | 6 | 1 | 1 | |
---|---|---|---|---|---|---|
dp | 1 | 2 | 1 | 1 | 1 | 2 |
完整代码:
class Solution {
public:int numDecodings(string s) {vector<int> dp(s.size()+1 , 1); // 多定义dp的一个范围,防止第1(2)个元素访问dp[i-2]产生越界;if(s[0] == '0')return 0;for(int i=1;i<s.size();i++){if(s[i] == '0'){if(s[i-1] == '1' || s[i-1] == '2') // 只能和前面的数绑定在一起,唯一被译码dp[i+1] = dp[i-1];elsereturn 0;}else if(s[i-1] == '1' || (s[i-1] == '2' && s[i] <='6'))dp[i+1] = dp[i] + dp[i-1]; // 能组合,也能拆开else dp[i+1] = dp[i]; // 只能拆开}return dp[s.size()];}
};
LeetCode 91.解码方法相关推荐
- leetcode: 91. 解码方法
91. 解码方法 来源:力扣(LeetCode) 链接: https://leetcode.cn/problems/decode-ways/ 一条包含字母 A-Z 的消息通过以下映射进行了 编码 : ...
- Java实现 LeetCode 91 解码方法
91. 解码方法 一条包含字母 A-Z 的消息通过以下方式进行了编码: 'A' -> 1 'B' -> 2 - 'Z' -> 26 给定一个只包含数字的非空字符串,请计算解码方法的总 ...
- LeetCode 91. 解码方法(动态规划)
1. 题目 一条包含字母 A-Z 的消息通过以下方式进行了编码: 'A' -> 1 'B' -> 2 ... 'Z' -> 26 给定一个只包含数字的非空字符串,请计算解码方法的总数 ...
- 125. Leetcode 91. 解码方法 (动态规划- 字符串系列)
步骤一.确定状态: 确定dp数组及下标含义 dp[i]表示的是到i这个位置的字符串的解码方法 步骤二.推断状态方程: dp[i]的推导会取决于当前s[i]的字符情况以及前一位字符,具体如下: 如果当前 ...
- Leetcode 91. 解码方法 (每日一题 20211013)
一条包含字母 A-Z 的消息通过以下映射进行了 编码 :'A' -> 1 'B' -> 2 ... 'Z' -> 26 要 解码 已编码的消息,所有数字必须基于上述映射的方法,反向映 ...
- leetcode - 91. 解码方法
一条包含字母 A-Z 的消息通过以下方式进行了编码: ′A′−>1'A' -> 1′A′−>1 ′B′−>2'B' -> 2′B′−>2 ......... ′Z′ ...
- LeetCode 91. 解码方法 Java/Python
一条包含字母 A-Z 的消息通过以下方式进行了编码: 'A' -> 1 'B' -> 2 ... 'Z' -> 26 给定一个只包含数字的非空字符串,请计算解码方法的总数. 示例 1 ...
- leetcode 91 解码方法 动态规划 递推
// 各种特殊情况处理 // 选择从右往左,从左往右也是一样class Solution { public:int numDecodings(string s) {int n = s.length() ...
- leetcode 91. 解码方法(dp)
解题思路 记忆化搜索,记录已经计算过的子问题 代码 func numDecodings(s string) int {temp:=make([]int,len(s),len(s))for i := r ...
最新文章
- [maven] 使用问题及思考汇总
- OO第三单元作业总结
- 为什么很多人喜欢把软件装在D盘,而不是系统盘C
- Vim 80列布局问题
- 读书笔记-沙漠里的细水微光
- linux要不要home分区,有必要建/home/boot分区吗
- Android Studio:64K问题com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65536
- oracle层级关系按列存储_几张图看懂列式存储
- sizeof是c语言的一种运算符,深入sizeof的使用详解
- 4.1 SE38数据类型
- java中对象排序_java中 对象的排序
- EditText控件(圆角处理)
- git pull checkout后文件权限变更
- 将计算机网口虚拟串口软件,虚拟串口及其在串口转以太网中的应用
- PC端哔哩哔哩动画下载的本地视频无法打开
- 程序员在体制内的工作与生活是怎样的?
- 在win7系统 Keil 开发环境下 Jlink 仿真器连不上解决办法
- python数据分析岗位做什么_给力!数据分析岗位内部人的建议,可以少走很多弯路...
- C2D 代码转设计稿是怎么实现的?
- gcc开启C99或C11标准支持