news 2026/4/22 11:19:05

【剑斩OFFER】算法的暴力美学——力扣 394 题:字符串解码

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【剑斩OFFER】算法的暴力美学——力扣 394 题:字符串解码

一、题目描述

二、算法原理

思路:使用双栈,一个栈原来存储字符串,另外一个存储整型数字;

1)一开始,把 string 栈先放个空字符串进去,方便后面操作;

2)如果碰到纯字母(非 [ 后面的字母),就让把这些字母提取出来拼接到 string 栈栈顶元素的后面:

3)如果遍历到数字,直接入 int 栈:

4)如果遍历到 ' [ ',就把 [ 后面的字母入 string 栈:

5)如果遍历到 ' ] ',就把双栈的栈顶元素拿出来,进行重复 K 次工作,重复结束之后把这个字符串拼接到栈顶元素的后面(这也是我为什么让 string 一开始放个空串进去的原因):

最终答案:此时 string 的栈顶元素就是最终答案:

三、代码实现

class Solution { public: string decodeString(string s) { vector<int> int_stack; vector<string> char_stack(1,""); for(int i = 0; i < s.size();) { if(s[i] == '[')// "[" 后面跟字母 { i++; string str = ""; while(!isdigit(s[i]) && s[i] != ']' && s[i] != '[') { str += s[i]; i++; } char_stack.push_back(str); } else if(isdigit(s[i]))//纯数字 { int tmp = 0; while(isdigit(s[i])) { tmp = tmp * 10 + (s[i] - '0'); i++; } int_stack.push_back(tmp); } else if(s[i] != ']') { //纯字母 string str; while(i < s.size() && !isdigit(s[i]) && s[i] != ']' && s[i] != '[') { str += s[i]; i++; } char_stack.back() += str; } else // "]" { //']' //取双栈元素 int k = int_stack.back(); string str = char_stack.back(); //出双栈元素 int_stack.pop_back(); char_stack.pop_back(); string ret = ""; for(int j = 0; j < k; j++) ret += str; char_stack.back() += ret; i++; } } return char_stack.back(); } };
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/18 19:08:27

组合逻辑电路中的加法器设计:从半加器到全加器

从零构建加法器&#xff1a;半加器到全加器的底层逻辑之旅你有没有想过&#xff0c;计算机是如何做加法的&#xff1f;不是打开计算器点两下&#xff0c;而是从最基础的晶体管和逻辑门开始&#xff0c;如何一步步搭建出能完成二进制相加的电路&#xff1f;这背后&#xff0c;正…

作者头像 李华
网站建设 2026/4/19 11:27:08

NSC_BUILDER:Nintendo Switch文件管理工具完整使用手册

NSC_BUILDER&#xff1a;Nintendo Switch文件管理工具完整使用手册 【免费下载链接】NSC_BUILDER Nintendo Switch Cleaner and Builder. A batchfile, python and html script based in hacbuild and Nuts python libraries. Designed initially to erase titlerights encrypt…

作者头像 李华
网站建设 2026/4/18 2:00:08

纪念币自动预约终极指南:告别手忙脚乱的抢币时代

纪念币自动预约终极指南&#xff1a;告别手忙脚乱的抢币时代 【免费下载链接】auto_commemorative_coin_booking 项目地址: https://gitcode.com/gh_mirrors/au/auto_commemorative_coin_booking 还在为每次纪念币发行时的激烈竞争而苦恼吗&#xff1f;纪念币自动预约工…

作者头像 李华
网站建设 2026/4/20 7:40:47

LeaguePrank终极指南:快速掌握英雄联盟个性化展示工具

LeaguePrank终极指南&#xff1a;快速掌握英雄联盟个性化展示工具 【免费下载链接】LeaguePrank 项目地址: https://gitcode.com/gh_mirrors/le/LeaguePrank 你是否厌倦了英雄联盟客户端千篇一律的界面&#xff1f;想要在好友面前展示更酷的自己&#xff0c;又担心影响…

作者头像 李华
网站建设 2026/4/19 7:02:41

如何快速掌握空洞骑士模组:Scarab管理器实战指南

如何快速掌握空洞骑士模组&#xff1a;Scarab管理器实战指南 【免费下载链接】Scarab An installer for Hollow Knight mods written in Avalonia. 项目地址: https://gitcode.com/gh_mirrors/sc/Scarab 还记得那个在圣巢迷路三小时&#xff0c;好不容易找到隐藏区域却发…

作者头像 李华
网站建设 2026/4/19 12:49:39

ResNet18技术详解:ImageNet数据集的迁移学习

ResNet18技术详解&#xff1a;ImageNet数据集的迁移学习 1. 引言&#xff1a;通用物体识别中的ResNet18价值 在计算机视觉领域&#xff0c;通用物体识别是构建智能系统的基础能力之一。面对海量图像数据&#xff0c;如何快速、准确地理解图像内容&#xff0c;成为AI应用落地的…

作者头像 李华