【394.字符串解码】

目录

一、题目描述

二、算法原理

三、代码实现

cpp 复制代码
class Solution {
public:
    string decodeString(string s) 
    {
        stack<string> s1;
        s1.push("");
        stack<int> s2;
        int i = 0, n = s.size();
        while (i < n)
        {
            //1.如果是数字入数字栈
            if (s[i] >= '0' && s[i] <= '9')
            {
                int sum = 0;
                while (s[i] >= '0' && s[i] <= '9')
                {
                    int val = s[i] - '0';
                    sum = sum * 10 + val;
                    i++;
                }
                s2.push(sum);
            }

            //2.如果是[ 统计后面的字符串入字符串栈
            else if (s[i] == '[')
            {
                string str;
                i++;
                while (s[i] >= 'a' && s[i] <= 'z') str += s[i++];
                s1.push(str);
            }

            //3.如果是] 解码后入字符栈顶的子串后面
            else if (s[i] == ']')
            {
                int times = s2.top();
                s2.pop();
                string temp = s1.top();
                s1.pop();
                while (times--) s1.top() += temp;
                i++;
            }

            //4.如果是字符 把字符串入栈顶的子串后面
            else if (s[i] >= 'a' && s[i] <= 'z')
            {
                string str;
                while (s[i] >= 'a' && s[i] <= 'z') str += s[i++];
                if (str.size() > 0) s1.top() += str;
            }
        }
        return s1.top();
   
        
    }
};
相关推荐
郝学胜-神的一滴3 分钟前
深度学习入门基石:PyTorch张量核心技术全解析
人工智能·pytorch·python·深度学习·算法·机器学习
Frostnova丶10 分钟前
(10)LeetCode 560. 和为K的子数组
算法·leetcode·哈希算法
AI专业测评14 分钟前
2026年AI写作软件底层技术全景解析:长篇AI写网文的工程化实践与AI消痕算法基准测试
人工智能·算法·ai写作
biter down15 分钟前
C++ 设计不可被继承的类
java·开发语言·c++
Once_day17 分钟前
C++之《程序员自我修养》读书总结(12)
c++·编译与链接
浅念-19 分钟前
C++ 异常
开发语言·数据结构·数据库·c++·经验分享·笔记·学习
2401_8845632420 分钟前
高性能日志库C++实现
开发语言·c++·算法
葳_人生_蕤20 分钟前
hot100——226.翻转二叉树
算法
czxyvX24 分钟前
C++ - 基于多设计模式下的同步&异步日志系统
c++·设计模式
handler0124 分钟前
基础算法:BFS
开发语言·数据结构·c++·学习·算法·宽度优先