Leetcode 91.解码方法

【中等】力扣算法题解析LeetCode91:解码方法 本文介绍了一种动态规划方法来解决数字字符串解码问题。给定一个由数字组成的字符串,每个数字或数字组合(1到26)对应一个字母(A-Z),要求计算字符串所有可能的解码方式总数。核心思路是遍历字符串,通过状态转移处理当前字符单独解码或与前一个字符组合解码的情况。初始化时,空字符串的解码方式为1,首字符的解码方式取决于是否为0。遍历过程中,若当前字符为0,必须与前一个字符组合(10或20);否则,可单独解码或组合解码(10-26)。最终返回解码方式总数,若无法解码则返回0。 阅读详情

1.题目

在这里插入图片描述

2.解法1(递归法)

class Solution {
    public int numDecodings(String s){
        char[] chars = s.toCharArray();
        if(chars[0] == '0'){
            return 0;
        }
        int count = decode(chars, chars.length-1);
        return  count;
    }

    public int decode(char[] chars, int index){
        
        if(index <= 0){
            return 1;
        }
        int count = 0;
        char cur = chars[index];
        char pre = chars[index-1];
        if(cur > '0'){
            count = decode(chars, index-1);
        }
        if(pre == '1' || (pre == '2' && cur <= '6')){
            count += decode(chars, index-2);
        }
        return  count;
    }
    }

思路是:
有两种情况:一种是个位数,另外一种是十位数,两种情况加一起进行递归。
有几种情况需要注意:
1.如果以0开头,无法解码
2.如果以1开头,第2位会有0-9种情况,如果以2开头,第2位会有0-6种情况。

力扣--91. 解码方法 力扣–91. 解码方法 文章目录力扣--91. 解码方法一、题目描述二、解题思路三、代码 一、题目描述 一条包含字母 A-Z 的消息通过以下方式进行了编码: 'A' -> 1 'B' -> 2 ... 'Z' -> 26 给定一个只包含数字的非空字符串,请计算解码方法的总数。 示例 1: 输入: "12" 输出: 2 解释: 它可以解码为 "AB"(1 2)或者 "L"(12)。 示例 2: 输入: "226" 输出: 3 解释: 它可以解码为 "BZ" (2 26), " 阅读详情

相关推荐

【人工智能】AI算法系统设计与算法建模的详细阐述

AI算法系统设计与算法建模是人工智能领域中的核心任务之一,它涉及从问题定义、数据收集、算法选择、模型构建到系统部署的全过程。以下是对AI算法系统设计与算法建模的详细阐述

weixin_51306394的博客 4355

我30岁,为高薪转行当程序员,第一份工作月薪7500

我30岁,为高薪转行当程序员,第一份工作月薪7500

大模型教程的博客 1262

工程师必看:如何用MINITAB快速计算传感器寿命(附详细步骤)

本文为工程师提供了使用MINITAB软件快速计算传感器寿命的详细实战指南。文章重点阐述了如何通过数据预处理、回归分析拟合阿伦尼斯模型,并最终预测平均寿命与置信区间,帮助工程师高效处理加速寿命试验数据,提升可靠性分析工作的准确性与效率。

weixin_29296241的博客 248

30岁了还能不能转行学计算机?

最近收到一位读者朋友的提问,这个问题具有普遍共性,我对隐私信息做了脱敏处理,在这里公开给大家也参阅。很多人转码应该都是被计算机行业高薪吸引,不过高薪是相对的,我们要分开来讨论。不知道你现在哪个行业,薪资待遇如何?转码之后的预期能接受的薪资是多少呢?数据统计全国城市互联网行业平均月薪是10.29K/月,如果你原来行业薪资天花板很低,那不妨来互联网试试,我坚定看好互联网行业,,依旧未来可期。

wly55690的博客 333

《华为项目管理之道》第1章笔记

performance indicator,KPI)纳入个人绩效承诺书,贯彻结果导向的理念,以向员工。客户需求是华为发展的原动力,为客户服务是华为存在的唯一理由。目经理‘用兵’,依靠市场机制‘调兵’”,打破了人员在功能部门的板结,实现了听得。为管理者选拔的必要条件,项目经理成为人人向往的岗位。《华为项目管理之道》,是新出的华为官方的项目管理书,整个书不错。伴随着项目型组织的建立,华为逐步形成了完备的项目管理流程和制度,从而将业务运。为此,通过改革,重新明确了项目经理承担的经营责任,并开始以项。

jackyrongvip的专栏 2128

泛微OA E9文档管理优化:临时文件清理与存储配置指南

本文深入解析了泛微OA E9系统性能下降的常见原因——临时文件堆积,并提供了完整的优化配置指南。文章详细介绍了临时文件的产生机制,并手把手指导管理员如何通过修改存储路径、调整保留时间、设置白名单等关键配置,有效清理与管理系统临时文件,从而释放存储空间,提升系统运行效率与稳定性。

tree8的博客 432

程序人生:35岁为什么是程序员们的一道坎?

程序员、码农、996名词的首发代言人,曾经是我们这个世纪最大的幸运儿,因为目前这行业最吃香最赚钱。走在高科技园区的路上,如果对面走过来一位意气风发的20多岁小伙,眉目间精神饱满,但是头顶上却毛发稀疏甚至中央见秃,路人们会投去羡慕的眼神,看!那位小伙一定是996的程序员,而且是神级的,因为在996的码农行业,比的不是代码堆多少行,比的是谁的头发少,谁就是码农中的大神。

测试萌萌 4769

【faers数据库-R语言】

摘要:本文详细介绍了FAERS数据库不良反应信号挖掘的完整流程,包括数据解压导入(R代码示例)、数据结构理解、数据清洗(缺失值处理、标准化、合并和编码映射)、信号挖掘准备(药物-反应组合表创建)以及信号强度指标计算(PRR和ROR)。重点阐述了数据清洗的关键步骤,如缺失值处理(colSums(is.na()))、数据标准化(toupper()、as.Date())和表合并(merge()),并提供了完整的R语言实现代码。最后强调结果需结合临床知识解读,建议使用data.table等高效工具处理大数据。整个流

weixin_46587777的博客 1504

30岁决心转行,AI太香了

今天是一篇老学员的经历分享,此时的王同学在大洋彼岸即将毕业,手握多家北美大厂offer,一片明媚。谁能想到王同学的转码之路竟始于一场裁员,这场访谈拉开了他的回忆。。我决定转行的时候已经快30岁了,本硕都读的建筑学,毕业后进地产公司,早几年地产那叫一个爆啊,过得相当好,还窃喜自己选对了路子,俗话说“三十年河东,三十年河西”,也就过了四五年,地产就萎了,随之而来的收入缩水、消费降级、大规模裁员、绩效全无只拿底薪……转行肯定是唯一的出路,总不能等房地产再创辉煌吧?黄花菜都凉透了。

2401_85328934的博客 1372

YOLOV5 自动刷图脚本实战(十五)之如何找到正确的门

DXF是一个2D游戏,我们所看到的人物移动,其实是后面的背景在移动,我们所看到的画面,不过是一个完整背景中的一个镜头视角而已想要正确找到门的坐标,我们需要对不同的地图中的每个房间做一些配置信息。

qq_38892949的博客 2812

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

35岁了,应该转行学Python吗?——来自女程序员的分享

当这个问题抛过来,有些人的答案清晰明了,有些人的答案则一如阴天一样混沌。对于后者来说,转行成为码农,成为一个可以抓住的火把,燃烧掉一些职业危机的恐慌。年轻人转码,精力处于顶峰,吸收知识也更加迅速,相较之下,年近30成为程序员,像是一台放缓的机器,需要耗费更多的心力去完成。但曲折背后,也有无法替代的力量——明确的上升路径,极大的薪资跨度,更重要的是,对生活的掌控感。对于大龄青年来说,转码更像是一个希望,是打开世界的另一种可能。我今天28,眼瞅着要奔三了,在三个月前决定做一个码农。

weixin_68789096的博客 752

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

力扣LeetCode #91 解码方法(NumDecodings)

- 题目描述 一条包含字母 A-Z 的消息通过以下方式进行了编码: 字母 数字 ‘A’ 1 给定一个只包含数字的非空字符串,请计算解码方法的总数。 题目数据保证答案肯定是一个 32 位的整数。 示例 1: 输入:“12” 输出:2 解释:它可以解码为 “AB”(1 2)或者 “L”(12)。 示例 2: 输入:“226” 输出:3 解释:它可以解码为 “BZ” (2 26), “VF” (22 6), 或者 “BBF” (2 2 6) 。 示例 3: 输入:s = “0” 输出:0 示例

weixin_49155948的博客 531

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

力扣第91题 解码方法

一条包含字母A-Z给定一个只包含数字的非空字符串,解码方法的总数是多少?

weixin_48941116的博客 851

LeetCode 91 —— 91.解码方法

我们以 121023 作为例子。我们初始化 DP 和 s[0…

刘伟佳的博客 1万+

LeetCode 力扣 91. 解码方法

題目描述(中等难度) 每个数字对应一个字母,给一串数字,问有几种解码方式。例如 226 可以有三种,2|2|6,22|6,2|26。 解法一 递归 很容易想到递归去解决,将大问题化作小问题。 比如 232232323232。 对于第一个字母我们有两种划分方式。 2|32232323232 和 23|2232323232 所以,如果我们分别知道了上边划分的右半部分 32232323232 的解码方...

wind_liang的博客 1136

力扣完全平方数279和力扣91解码方法的做题笔记

动态规划的状态定义dp[i]:表示前i个字符的解码方式数。例如,dp[1]表示前 1 个字符的解码方式数。dp[2]表示前 2 个字符的解码方式数。以此类推。

lfm147258369的博客 1285

dp 力扣 91. 解码方法

力扣 91. 解码方法 题目: 链接https://leetcode.cn/problems/decode-ways/ 思路: 使用动态规划思想 根据题目可得 题目要求为 并返回解码方法的总数,从A-Z就是1-26,把数组里的数组两两组合或者不组合得到大方案数 。 dp[i]定义为 从起点dp[0]到dp[i]的解码方法的总数的集合 dp状态为count 这题有几个边界条件 1、不能组01-09的数 2、数字以0开头就无法组成任何一种方案,因为0不能单独为一个数并且边界条件1。 3、不能组成26以上的数字

爪蛙毁一生的博客 337

leetcode91. 解码方法,动态规划

leetcode91. 解码方法,动态规划

热爱C++和golang的学生 2827

【LeetCode】91. 解码方法

本文介绍了解决"解码方法"问题的动态规划解法。题目要求将数字字符串解码为字母组合(1-26对应A-Z),计算所有可能的解码方式。核心思路是使用动态规划,状态转移考虑单字符和双字符两种解码方式,并处理前导零等边界情况。时间复杂度O(n),空间复杂度可优化至O(1)。示例展示了不同字符串的解码过程,如"226"有3种解码方式,而"06"因前导零无法解码。

qq_32019341的博客 1382

LeetCode 91.解码方法

LeetCode 91.解码方法 一条包含字母 A-Z 的消息通过以下方式进行了编码: 'A' -> 1 'B' -> 2 ... 'Z' -> 26 给定一个只包含数字的非空字符串,请计算解码方法的总数。 示例 1: 输入: "12" 输出: 2 解释: 它可以解码为 "AB"(1 2)或者 "L"(12)。 示例 2: 输入: "226" 输出: 3 解释: 它可以解...

缇欧的咪西 404

LeetCode:91. 解码方法(python)

LeetCode:91. 解码方法(python) 一条包含字母 A-Z 的消息通过以下方式进行了编码: ‘A’ -> 1 ‘B’ -> 2 … ‘Z’ -> 26 给定一个只包含数字的非空字符串,请计算解码方法的总数。 示例 1: 输入: “12” 输出: 2 解释: 它可以解码为 “AB”(1 2)或者 “L”(12)。 示例 2: 输入: “226” 输出: 3 解释...

wk的博客 1068

动态规划-91.解码方法-力扣(LeetCode)

根据状态转移方程,我们需要对dp[0]和dp[1]初始化,对于dp[0]只有1或0两种可能,而dp[i]则有三种可能0,1,2,还需要注意处理越界问题,在跑示例的时候会遇到的,这里不做过多赘述。我们状态表示定义dp[i]表示:以i位置为结尾,解码方法的总方法数,所以返回dp[n-1],这里的n是给定string的长度。将对应字符转化为数字,我们知道有的大写字母范围是在[1,9],剩下的则是[10,26],这个对应关系使我们解题的关键。dp[i]表示:以i位置为结尾时,解码方法总数。根据最近的一步划分问题。

black_bear_white的博客 369

LeetCode91. 解码方法

LeetCode91. 解码方法 题目链接 题目描述: 一条包含字母 A-Z 的消息通过以下方式进行了编码: 'A' -> 1 'B' -> 2 ... 'Z' -> 26 给定一个只包含数字的非空字符串,请计算解码方法的总数。 题目数据保证答案肯定是一个 32 位的整数。 示例: 输入:s = “12” 输出:2 解释:它可以解码为 “AB”(1 2)或者 “L”(12)。 分析: 状态表示:f(i),所有由前i个数字解码得到的字符串 属性:计算解码得到的字符串集合数量 集合

Loser_you的博客 180

LeetCode第91题_解码方法

一条包含字母A-Z要解码已编码的消息,所有数字必须基于上述映射的方式,反向映射回字母(可能有多种方法)。例如,"11106""AAJF"(11 10 6)注意,对应于(1 11 06)的"AKF"不是有效的解码方案,因为"06"不能映射为"F",这是由于"6"和"06"在映射中并不等价。给你一个只含数字的非空字符串s,请计算并返回解码方法的总数。题目数据保证答案肯定是一个 32 位的整数。

qq_40263592的博客 1194
上一篇: Leetcode 279 完全平方数
下一篇: Leetcode 247.中心对称数II
念殊15
博客等级 码龄7年 17粉丝 177原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值