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

【LeetCode】394. 字符串解码

题目

394. 字符串解码

思路

创建两个栈,一个栈存储数字,另一个栈存储字符串。如果当前的字符为数位,解析出一个数字并进栈,如果当前的字符为字母或者左括号,直接进栈,如果当前的字符为右括号,开始出栈,一直到左括号出栈,出栈序列反转后拼接成一个字符串,此时取出栈顶的数字,根据这个次数和字符串构造出新的字符串,重复如上操作,最终将栈中的元素按照从栈底到栈顶的顺序拼接起来。

代码

class Solution {
public:
    string decodeString(string s)
    {
        stack<int> nums; // 用于存储数字
        stack<string> st; // 用于存储字符串
        string tmp; // 临时字符串
        int num = 0; // 当前数字
        int n = s.size(); // 字符串长度
    for (int i = 0; i < n; i++) 
    {
        if (isdigit(s[i])) 
        {
            num = 10 * num + s[i] - '0'; // 解析数字
        } 
        else if (isalpha(s[i])) 
        {
            tmp.push_back(s[i]); // 解析字母
        } 
        else if (s[i] == '[') 
        {
            nums.push(num); // 数字入栈
            num = 0; // 重置数字
            st.push(tmp); // 字符串入栈
            tmp.clear(); // 清空临时字符串
        } 
        else if (s[i] == ']') 
        {
            int cnt = nums.top(); // 获取栈顶数字
            nums.pop(); // 数字出栈
            string str = tmp; // 临时字符串
            for (int j = 0; j < cnt; j++) 
            {
                st.top() += str; // 重复字符串
            }
            tmp = st.top(); // 更新临时字符串
            st.pop(); // 字符串出栈
        }
    }
    return tmp; // 返回解码后的字符串
    }
};

相关文章:

  • Windows中指定路径安装DockerDesktop
  • 02、QLExpress从入门到放弃,相关API和文档
  • Electron:使用electron-react-boilerplate创建一个react + electron的项目
  • 回顾Golang的Channel与Select第一篇
  • Anaconda +Jupyter Notebook安装(2025最新版)
  • 【C】初阶数据结构5 -- 栈
  • 【Python爬虫(1)】专栏开篇:夯实Python基础
  • KVM虚拟化快速入门,最佳的开源可商用虚拟化平台
  • 详解Windows 系统上部署 Spring Boot + MyBatis + MySQL 项目
  • hyperf 异步队列
  • 打破AI黑盒,拥抱开源力量:基于openGauss+DeepSeek的本地知识库,打造你的专属AI助手!
  • go语言简单快速的按顺序遍历kv结构(map)
  • 网络工程师 (32)TRUNK
  • c++20新特性
  • B+Tree在mysql中的使用
  • 17.推荐系统的在线学习与实时更新
  • FANUC机器人示教器中如何显示或关闭寄存器或IO的注释信息?
  • 缓存穿透问题及解决方案
  • 《刚刚问世》系列初窥篇-Java+Playwright自动化测试-23- 操作鼠标拖拽 - 番外篇(详细教程)
  • Windows安装 WSL2、Ubuntu 、docker(详细步骤 , 弃用 docker desktop )
  • 一季度全国30强城市出炉:谁能更进一步?谁掉队了?
  • 新闻1+1丨多地政府食堂开放“舌尖上的服务”,反映出怎样的理念转变?
  • 郭旭涛转任河北省科协党组书记、常务副主席,曾任团省委书记
  • 热点问答丨新加坡人民行动党缘何再赢议会选举
  • 国铁集团:5月4日全国铁路预计发送旅客2040万人次
  • 商务部:外贸优品中华行活动采购意向超167亿元