news 2026/1/14 8:08:41

⭐力扣刷题:字符串解码

作者头像

张小明

前端开发工程师

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进行投诉反馈,一经查实,立即删除!
网站建设 2025/12/31 23:13:01

大一新生逆袭年入百万!“天才小火炬” 名号,是怎么来的?

2024网安界跑出一匹引人瞩目的黑马 仅用一年挖洞收入突破100万的百万赏金猎人 2024腾讯SRC年榜第一 而就在这一年前 他仅仅是一个因为挂科留级的大一“新生” 他说&#xff0c;他是天才小火炬 2024 创造挖洞奇迹 2024年&#xff0c;网络安全领域迎来了一位耀眼的新星&#xff…

作者头像 李华
网站建设 2026/1/11 15:41:43

【高危漏洞预警】Kubernetes服务器端请求伪造漏洞(CVE-2025-13281)

漏洞描述:Kubеrnеtеѕ是一个开源的容器编排平台,用于自动化应用程序的部署、扩展与管理。它通过kubе-арiѕеrvеr提供RESTful接口,统一管控集群状态、配置与策略,是云原生架构的核心基础设施Kubеrnеtеѕ kubе-арiѕеrvеr在解析匿名请求与Wеbhооk令牌认证链的…

作者头像 李华
网站建设 2025/12/16 11:24:51

边缘AI混合模型LFM2-350M:轻量化部署的技术突破

边缘AI混合模型LFM2-350M&#xff1a;轻量化部署的技术突破 【免费下载链接】LFM2-350M 项目地址: https://ai.gitcode.com/hf_mirrors/LiquidAI/LFM2-350M 边缘计算设备面临算力有限、功耗约束和部署复杂等挑战&#xff0c;如何在这些场景中实现高效的轻量化AI部署成为…

作者头像 李华
网站建设 2026/1/3 22:36:51

15-3.【Linux系统编程】进程信号 - 信号捕捉(信号捕捉流程、操作系统运行方式及流程、内核态和用户态、可重入函数、volatile防止优化)

目录 4. 信号捕捉4.1 信号捕捉的流程&#xff08;CPU在用户态与内核态之间切换&#xff09;4.2 操作系统是怎么运行的4.2.1 硬件中断4.2.2 时钟中断4.2.3 死循环4.2.4 软中断4.2.5 缺页中断&#xff1f;内存碎片处理&#xff1f;除零野指针错误&#xff1f; 4.3 用户态和内核态…

作者头像 李华
网站建设 2025/12/16 11:24:14

30、本地化与国际化文本函数

本地化与国际化文本函数 1. 字体集相关操作 在处理字体集时,有几个重要的函数和概念需要了解。 1.1 获取字体名称列表 可以使用 XBaseFontNameListOfFontSet 函数来获取给定 XFontSet 的基础字体名称列表。 char *XBaseFontNameListOfFontSet(font_set);font_set :…

作者头像 李华