news 2026/4/12 2:45:10

⭐力扣刷题:字符串解码

作者头像

张小明

前端开发工程师

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/10 10:30:11

学编程不如直接选择学习网络安全!看清这两个前提再做选择!

一、先看一组扎心对比&#xff1a;市场真的不一样 程序员 &#xff1a;2024 智联招聘数据显示&#xff0c;Java 开发岗平均 1 岗 38 人竞争&#xff0c;应届生起薪中位数仅 7800 元&#xff1b;某大厂 2024 校招开发岗简历通过率不足 5%&#xff0c;且明确要求 “211/985 或顶…

作者头像 李华
网站建设 2026/4/5 14:44:15

Moovie.js:终极免费视频播放器完整指南 [特殊字符]

Moovie.js&#xff1a;终极免费视频播放器完整指南 &#x1f3ac; 【免费下载链接】moovie.js Movie focused HTML5 Player 项目地址: https://gitcode.com/gh_mirrors/mo/moovie.js 想要在网站上添加专业级的视频播放功能吗&#xff1f;Moovie.js这款开源视频播放器就是…

作者头像 李华
网站建设 2026/4/10 5:19:03

零代码玩转StyleGAN:AI人像生成从入门到变现

零代码玩转StyleGAN&#xff1a;AI人像生成从入门到变现 【免费下载链接】stylegan StyleGAN - Official TensorFlow Implementation 项目地址: https://gitcode.com/gh_mirrors/st/stylegan 还在为设计素材发愁&#xff1f;想制作专属虚拟形象却不懂编程&#xff1f;别…

作者头像 李华
网站建设 2026/4/11 8:41:10

RAX3000M OpenWrt固件终极选择指南:快速上手完整教程

还在为RAX3000M路由器选择OpenWrt固件而困惑吗&#xff1f;本指南将为你解答所有疑问&#xff0c;帮助你快速上手并避免常见陷阱。 【免费下载链接】Actions-rax3000m-emmc Build ImmortalWrt for CMCC RAX3000M eMMC version using GitHub Actions 项目地址: https://gitcod…

作者头像 李华
网站建设 2026/4/11 15:04:42

47、Xlib编程中的资源关联与图形概念详解

Xlib编程中的资源关联与图形概念详解 1. 资源关联函数 在Xlib编程中,有时需要将任意信息与资源ID关联起来。虽然一些函数已被上下文管理函数取代,但Xlib提供了 XAssocTable 函数来实现这种关联。应用程序在事件发生时,常常需要方便地引用自己的数据结构, XAssocTable …

作者头像 李华