题目描述:

解题思路:动态规划

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、解码方法相关推荐

  1. LeetCode 91.解码方法

    LeetCode 91.解码方法 ways: s[i] = 0 : if(s[i-1] == 1 || s[i-1] == 2) :s[i]只能和前一位绑定在一起,此时dp[i] = dp[i-2]; ...

  2. leetcode: 91. 解码方法

    91. 解码方法 来源:力扣(LeetCode) 链接: https://leetcode.cn/problems/decode-ways/ 一条包含字母 A-Z 的消息通过以下映射进行了 编码 : ...

  3. Java实现 LeetCode 91 解码方法

    91. 解码方法 一条包含字母 A-Z 的消息通过以下方式进行了编码: 'A' -> 1 'B' -> 2 - 'Z' -> 26 给定一个只包含数字的非空字符串,请计算解码方法的总 ...

  4. LeetCode 91. 解码方法(动态规划)

    1. 题目 一条包含字母 A-Z 的消息通过以下方式进行了编码: 'A' -> 1 'B' -> 2 ... 'Z' -> 26 给定一个只包含数字的非空字符串,请计算解码方法的总数 ...

  5. 125. Leetcode 91. 解码方法 (动态规划- 字符串系列)

    步骤一.确定状态: 确定dp数组及下标含义 dp[i]表示的是到i这个位置的字符串的解码方法 步骤二.推断状态方程: dp[i]的推导会取决于当前s[i]的字符情况以及前一位字符,具体如下: 如果当前 ...

  6. Leetcode 91. 解码方法 (每日一题 20211013)

    一条包含字母 A-Z 的消息通过以下映射进行了 编码 :'A' -> 1 'B' -> 2 ... 'Z' -> 26 要 解码 已编码的消息,所有数字必须基于上述映射的方法,反向映 ...

  7. leetcode - 91. 解码方法

    一条包含字母 A-Z 的消息通过以下方式进行了编码: ′A′−>1'A' -> 1′A′−>1 ′B′−>2'B' -> 2′B′−>2 ......... ′Z′ ...

  8. LeetCode 91. 解码方法 Java/Python

    一条包含字母 A-Z 的消息通过以下方式进行了编码: 'A' -> 1 'B' -> 2 ... 'Z' -> 26 给定一个只包含数字的非空字符串,请计算解码方法的总数. 示例 1 ...

  9. leetcode 91 解码方法 动态规划 递推

    // 各种特殊情况处理 // 选择从右往左,从左往右也是一样class Solution { public:int numDecodings(string s) {int n = s.length() ...

  10. leetcode 91. 解码方法(dp)

    解题思路 记忆化搜索,记录已经计算过的子问题 代码 func numDecodings(s string) int {temp:=make([]int,len(s),len(s))for i := r ...

最新文章

  1. 微软官方教程教你如何在Windows上做Python开发?
  2. VC++ 监控指定目录改变
  3. 根据测试路径自动生成测试用例_自拍教程75Python 根据测试用例选择测试资源
  4. 将数据从一个表剪切到另一个表中
  5. 【渝粤题库】陕西师范大学200431综合英语(一)作业(高起专、高起本)
  6. QZEZ第一届“饭吉圆”杯程序设计竞赛
  7. 关于码云开源项目SpringBootAdmin多数据源配置
  8. UVA1583 Digit Generator
  9. org.mariadb.jdbc.internal.com.send.authentication.SendGssApiAuthPacket could not be instantiated
  10. 中年码农,最后的倔强!
  11. gcc详解以及静态,动态库的生成 1
  12. XXL-JOB漏洞解决,Eclipse Jetty HTTP请求走私漏洞
  13. 基于canvas图像处理的图片 灰色图像
  14. [JZOJ3337] 【NOI2013模拟】wyl8899的TLE
  15. 乐播:手机投屏和镜像有什么区别?
  16. python安装第三方库re_音频处理 windows10下python三方库librosa安装教程
  17. 图解机器人瓦力_从机器人瓦力看爱情
  18. 怒写400篇AI文章!这群妹子卷疯了…
  19. 【RocketMq实战第四篇】-不同类型消费者(DefaultMQPushConsumerDefaultMQPullConsumer)
  20. VC++6.0遇到“error spawning cl.exe”的解决办法

热门文章

  1. 七、《好先生》经典台词
  2. 打造高效采购系统,提升企业采购效率
  3. linux下备份目录文件及目录
  4. 向着“好用”奔跑的国产操作系统何时才能跑入万千百姓家?
  5. GET请求参数带有特殊符号被转码!
  6. 100大最佳古怪网站
  7. IDEA中property配置文件中文乱码问题以及unicode转换
  8. stylus的引用方式 ,~ 是stylus的写法
  9. 骁龙660_骁龙660处理器性能怎么样 骁龙660处理器性能解析【图解】
  10. 相亲婚恋交友平台小程序+公众号+app【uniapp+thinkphp】开发功能全开源