Leetcode 91 题 解码方法

题目来源:https://leetcode-cn.com/problems/decode-ways/
个人公众号:小猿君的算法笔记

题目描述

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

示例 1:
输入:s = “12”
输出:2
解释:它可以解码为 “AB”(1 2)或者 “L”(12)。

提示:
1 <= s.length <= 100
s 只包含数字,并且可能包含前导零。

思路分析

这道题要求我们对给定的字符串进行解码,并获取解码方式总和。这里进行举例说明解题方式,假设s = “1122”。我们首先取出最后一个2,看有几种情况。很明显,只有一种情况B。
在这里插入图片描述
如果我们取后两位22进行解码,共有两种情况,BB或V。
在这里插入图片描述
我们继续增加一位变成122,增加的这个1可以单独作为A使用,也可以和其后的2组合,作为L使用。如果单独使用,那么解码数取决于22的解码数,即A BB或A V。如果和后面的2合并作为L使用,那么解码数取决于最后一位2的解码数,即L V。也就是说,122一共有三种解码方式。
在这里插入图片描述
再增加一位变为1122,新增的这个1可以单独作为A使用,也可以和第二位的1组合,作为K使用。如果单独使用,那么解码方式取决于122的解码方式,即A ABB或A AV或A LV。如果和后面的1合并作为K使用,那么解码方式取决于22的解码方式,即K BB或K V。因此,1122共有五种解码方式。

通过以上分析,我们可以看出,当前位N的解码方法总数,取决于N+1位长

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值