当前位置: 首页 > news >正文

【Hot 100 刷题计划】 LeetCode 394. 字符串解码 | C++ 单栈回压法

LeetCode 394. 字符串解码

📌 题目描述

题目级别:中等

给定一个经过编码的字符串,返回它解码后的字符串。
编码规则为:k[encoded_string],表示其中方括号内部的encoded_string正好重复k次。注意k保证为正整数。

  • 示例 1:
    输入:s = "3[a]2[bc]"
    输出:"aaabcbc"

  • 示例 2:
    输入:s = "3[a2[c]]"
    输出:"accaccacc"


💡 破题思路:单栈回压法 (Single Stack Re-push)

绝大多数教程在讲这道题时,都会教你使用“双栈法”(一个栈存数字,一个栈存字符串)。
但实际上,仅用一个字符栈也能极其优雅地解决问题,并且逻辑更加贴近底层硬件的工作方式。

本解法完美处理了两个最大痛点:

  1. 多位数字还原:当遇到]弹栈找数字时,数字是倒着出来的(比如100,先弹出0,再弹出0,最后弹出1)。我们利用权重变量w(初始为 1,每次乘 10),通过k = (st.top() - '0') * w + k完美还原真实数值。
  2. 嵌套括号问题 (核心魔法):当遇到3[a2[c]]这种嵌套结构时,我们在内部遇到第一个],解出了cc。此时千万不能把它直接加到最终结果里!我们的做法是:把它打散成字符,重新push回栈里!这样一来,cc就变成了普通的字符,和外层的a紧紧挨在了一起,静静等待外层括号的下一次结算。这就叫“回压法”。

💻 C++ 代码实现 (单栈极客版)

classSolution{public:stringdecodeString(string s){intn=s.size();stack<char>st;// 全局仅需一个字符栈string res;for(inti=0;i<n;i++){if(s[i]!=']'){// 不是右括号,统统入栈保存现场st.push(s[i]);}else{// 遇到右括号,开始清算当前这一层!string tmp;// 1. 弹出中括号内的纯字母字符串while(st.top()!='['){// 注意拼接顺序,栈是先进后出的,所以要加在前面tmp=st.top()+tmp;st.pop();}st.pop();// 弹出 '['// 2. 弹出前面的数字 (支持多位数字解析)intk=0,w=1;while(!st.empty()&&st.top()>='0'&&st.top()<='9'){k=(st.top()-'0')*w+k;w*=10;st.pop();}// 3. 将字符串按照解析出的数字倍数进行放大string add;for(intj=0;j<k;j++){add+=tmp;}// 4. 终极魔法:将放大后的字符串重新逐个压回栈中!// 完美化解嵌套危机,让它们参与外层括号的下一次清算for(intj=0;j<add.size();j++){st.push(add[j]);}}}// 大循环结束后,栈里剩下的就是完全解码的字符了while(st.size()){res=st.top()+res;st.pop();}returnres;}};
http://www.jsqmd.com/news/682552/

相关文章:

  • Java RPG Maker MV/MZ 文件解密器:轻松破解加密游戏资源的终极操作宝典
  • 教育部中央电教馆家庭教育指导师证书,证书含金量到授权机构,为什么是行以学文教育 - 博客万
  • 浏览器办公革命:3步实现Office文档免下载编辑
  • 【征稿启事】第二届计算生物学与系统生物学学术研讨会(CBSB 2026)
  • 2026年水轮机模型/教学实训水电站模型等水利模型厂家推荐:浏阳市湘东科技展览模型有限公司,多类型模型供应 - 品牌推荐官
  • Netflix 4K与DDplus音频技术实现深度解析:解锁影院级流媒体体验
  • 电脑蓝屏进不了系统怎么办?一文讲清 gsshield.sys 导致蓝屏的处理方法
  • 2011款MacBook Pro A1278升级指南:300元预算让它流畅运行Catalina和Win11
  • 分析2026年实力强的精装房改造专业公司,欢乐百佳装饰口碑好 - myqiye
  • 提供全流程设计、施工、运维服务的河北工程公司评价
  • 2026最新喷雾造景厂家推荐:雾森系统与文旅场景品牌实力解析 - 深度智识库
  • 终极色彩校准指南:如何用novideo_srgb解决NVIDIA显卡色彩过饱和问题
  • 从动态规划到DTW:一个Python可视化教程,带你亲手画出时间规整路径图
  • 牺牲质量从来不是降低成本
  • 如何高效使用fre:ac:专业音频转换与CD抓轨完整指南
  • 网易云音乐下载终极指南:如何免费保存高品质音乐到本地
  • 口碑好的家装品牌公司欢乐百佳,在安宁收费如何 - mypinpai
  • 清爽型防晒霜,防护力会更弱吗?Leeyo防晒霜狂晒12h清爽不黏腻防晒黑 - 全网最美
  • 【网络】UDP协议
  • WeChatPad终极指南:免Root实现微信平板模式与双设备登录
  • 2026数字水帘行业发展现状与优质厂家推荐 - 深度智识库
  • ACE-Step使用技巧:掌握这几个参数,让你的AI音乐更专业
  • 剖析2026年安宁二手房改造专业公司,欢乐百佳装饰价格透明选哪家 - 工业设备
  • 终极Beyond Compare 5密钥生成指南:快速激活与完全使用教程
  • 74HC595芯片手册没细讲的事:级联驱动点阵屏时的时序与消隐问题实战
  • 仅剩3%团队真正启用镜像签名!深度拆解Docker Content Trust弃用后,Cosign替代方案的5层可信验证架构
  • 解决 apt 安装报错后,我顺手整理了这份 Linux 包管理器的‘避坑’备忘录
  • 2026雾森系统哪家好?喷雾造景优质厂家推荐指南 - 深度智识库
  • 研发场景十大热门 Skill 推荐
  • 云原生时代的智能告警治理:Keep构建企业级可观测性平台