news 2026/5/1 7:58:57

⭐力扣刷题:字符串解码

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
⭐力扣刷题:字符串解码

题目:
给定一个经过编码的字符串,返回它解码后的字符串。

编码规则为: k[encoded_string],表示其中方括号内部的 encoded_string 正好重复 k 次。注意 k 保证为正整数。

你可以认为输入字符串总是有效的;输入字符串中没有额外的空格,且输入的方括号总是符合格式要求的。

此外,你可以认为原始数据不包含数字,所有的数字只表示重复的次数 k ,例如不会出现像 3a 或 2[4] 的输入。

测试用例保证输出的长度不会超过 105。

示例 1:

输入:s = “3[a]2[bc]”
输出:“aaabcbc”

示例 2:

输入:s = “3[a2[c]]”
输出:“accaccacc”

示例 3:

输入:s = “2[abc]3[cd]ef”
输出:“abcabccdcdcdef”

示例 4:

输入:s = “abc3[cd]xyz”
输出:“abccdcdcdxyz”

解析:
这道题的本质在于使用两个栈来模拟递归的过程,遇到左括号时保存当前状态,遇到右括号时恢复状态并计算。

第一阶段:准备阶段
准备两个空栈:一个用于存储数字(重复次数),一个用于存储字符串
初始化当前数字为0,当前结果字符串为空

第二阶段:遍历解析
从左到右扫描字符串的每个字符,根据字符类型采取不同操作:

当遇到数字时:
将当前数字左移一位(相当于十进制乘以10),然后加上新数字

这样可以正确处理多位数字,如"23"表示23次重复

当遇到左括号"["时:
这标志着一个新的嵌套层开始
将当前已构建的字符串压入字符串栈保存
将当前累计的数字压入数字栈保存
关键操作:清空当前数字和当前字符串,为内层嵌套做准备

当遇到右括号"]"时:
这标志着当前嵌套层结束
从数字栈顶弹出重复次数
从字符串栈顶弹出之前保存的字符串
将当前字符串重复指定次数,然后拼接到弹出的字符串后面
这个结果成为新的当前字符串

当遇到普通字母时:
直接追加到当前字符串末尾

第三阶段:状态管理的关键
这种算法的精妙之处在于状态的保存与恢复:
每次进入新的括号层级时,把外层状态存入栈中,自己从空白开始
每次退出当前层级时,从栈中取出外层状态,合并当前结果
这模仿了递归函数的调用和返回过程

具体代码:

/** * @param {string} s * @return {string} */vardecodeString=function(s){letnumstack=[]letstrstack=[]letnum=0letres=''for(leti=0;i<s.length;i++){if(!isNaN(s[i])){num=num*10+Number(s[i])}elseif(s[i]==='['){strstack.push(res)numstack.push(num)num=0res=''}elseif(s[i]===']'){constmulti=numstack.pop()res=strstack.pop()+res.repeat(multi)}else{res+=s[i]}}returnres};
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/19 19:15:42

开始使用 Elastic Agent Builder 和 Strands Agents SDK

作者&#xff1a;来自 Elastic Jonathan Simon 学习如何使用 Elastic Agent Builder 创建一个 agent&#xff0c;然后探索如何通过 A2A 协议&#xff0c;在 Strands Agents SDK 的编排下使用该 agent。 Elasticsearch 与行业领先的 Gen AI 工具和提供商有原生集成。查看我们的网…

作者头像 李华
网站建设 2026/4/23 17:48:56

如何提问(How to ask questions the smart way)

前言 你不必在技术上很在行才能吸引我们的注意&#xff0c;但你必须表现出能引导你变得在行的特质 —— 机敏、有想法、善于观察、乐于主动参与解决问题。 能立刻得到快速并有效答案的最好方法&#xff0c;就是像赢家那样提问 —— 聪明、自信、有解决问题的思路&#xff0c;只…

作者头像 李华
网站建设 2026/4/18 12:54:07

隧道气象站:守护隧道安全运行的“智慧哨兵”

隧道作为特殊的交通通道&#xff0c;其内部气象环境与外界差异显著&#xff0c;且对行车安全影响极大。隧道气象站作为专门针对隧道环境设计的气象监测系统&#xff0c;能够实时、精准地捕捉隧道内的关键气象参数&#xff0c;为隧道的安全运营提供重要保障。隧道气象站可监测多…

作者头像 李华
网站建设 2026/4/21 10:40:02

线性代数-同济大学第七版 资源下载

线性代数-同济大学第七版 资源下载 【免费下载链接】线性代数-同济大学第七版资源下载 本仓库提供《线性代数-同济大学第七版》的资源文件下载。该资源文件包含了同济大学第七版线性代数教材的完整内容&#xff0c;适用于学习线性代数的学生和教师使用 项目地址: https://git…

作者头像 李华
网站建设 2026/4/30 10:47:16

如何实现300%性能提升?Accelerate分布式推理全攻略

如何实现300%性能提升&#xff1f;Accelerate分布式推理全攻略 【免费下载链接】accelerate &#x1f680; A simple way to train and use PyTorch models with multi-GPU, TPU, mixed-precision 项目地址: https://gitcode.com/gh_mirrors/ac/accelerate 还在为千亿参…

作者头像 李华
网站建设 2026/4/26 14:28:49

芯片电源完整性效应对信号完整性影响的种类及其分析

“电源感知分析”和“SI/PI联合仿真”正迅速成为行业常用术语&#xff0c;在讨论这些概念时&#xff0c;往往会涉及多种不同的现象&#xff0c;但这些现象有时会被混淆&#xff0c;且常常出现理解偏差。这种混淆的产生是因为电源分配网络&#xff08;PDN&#xff09;与信号完整…

作者头像 李华