leetcode 91、解码方法
题目描述:
解题思路:动态规划
dp[i]来记录有多少分类
根据第s[i]的值来分类
1、s[i]的值为0
s[i-1]==1 || s[i-1]==2 ;则dp[i]=dp[i-2]。原因:因为0不能和s[i+1]组合(不符合题目), 那 只能和s[i-1]组合且s[i-1]不为0,那s[i-1]和s[i]就组合在一起只有一种情况。所以dp[i]=dp[i-2]
而s[i-1]不满足上述条件,则return 0;
2、s[i]>'0' && s[i]<='6'
只要s[i-1]==1 || s[i-1]==2 ;则dp[i]=dp[i-1]+dp[i-2]。
原因:当s[i-1]与s[i]结合在一起,就只有一种情况,则dp[i]=dp[i-2];当s[i-1]没有与s[i]结合, 则 dp[i]=dp[i-1];所以总和一下,dp[i]=dp[i-1]+dp[i-2]。
下面看代码吧
class Solution {
public:
int numDecodings(string s) {
if(s[0]=='0') return 0;
int pre=1; //dp[-1]=1
int num=1; //dp[0]=1
int len=s.size();
for(int i=1;i<len;i++)
{
int temp=num;
if(s[i]=='0')
if(s[i-1]=='1'||s[i-1]=='2') num=pre;
else return 0;
else if(s[i-1]=='1'||s[i-1]=='2'&&(s[i]>'0'&&s[i]<='6'))
{
num=num+pre;
}
pre=temp;
}
return num;
}
};
leetcode 91、解码方法相关推荐
- LeetCode 91.解码方法
LeetCode 91.解码方法 ways: s[i] = 0 : if(s[i-1] == 1 || s[i-1] == 2) :s[i]只能和前一位绑定在一起,此时dp[i] = dp[i-2]; ...
- 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 ...
最新文章
- 微软官方教程教你如何在Windows上做Python开发?
- VC++ 监控指定目录改变
- 根据测试路径自动生成测试用例_自拍教程75Python 根据测试用例选择测试资源
- 将数据从一个表剪切到另一个表中
- 【渝粤题库】陕西师范大学200431综合英语(一)作业(高起专、高起本)
- QZEZ第一届“饭吉圆”杯程序设计竞赛
- 关于码云开源项目SpringBootAdmin多数据源配置
- UVA1583 Digit Generator
- org.mariadb.jdbc.internal.com.send.authentication.SendGssApiAuthPacket could not be instantiated
- 中年码农,最后的倔强!
- gcc详解以及静态,动态库的生成 1
- XXL-JOB漏洞解决,Eclipse Jetty HTTP请求走私漏洞
- 基于canvas图像处理的图片 灰色图像
- [JZOJ3337] 【NOI2013模拟】wyl8899的TLE
- 乐播:手机投屏和镜像有什么区别?
- python安装第三方库re_音频处理 windows10下python三方库librosa安装教程
- 图解机器人瓦力_从机器人瓦力看爱情
- 怒写400篇AI文章!这群妹子卷疯了…
- 【RocketMq实战第四篇】-不同类型消费者(DefaultMQPushConsumerDefaultMQPullConsumer)
- VC++6.0遇到“error spawning cl.exe”的解决办法