【LeetCode热题100(69/100)】字符串解码

题目地址: 链接

思路: 栈。

  1. 遇到非]字符,压入栈
  2. 遇到]字符,将[ ]中的字符str拿出来,[前面的数字num拿出来,根据重复numstr字符,并将其压入栈。
ts 复制代码
function decodeString(s: string): string {
    let stk = [];
    for(let str of s) {
        if(str !== ']') stk.push(str);
        else {
            let str = ''
            while(stk[stk.length - 1] !== '[') {
                str = stk.pop() + str;
            }
            stk.pop(); // 弹出 [
            
            let numStr = '';
            while('0' <= stk[stk.length - 1] && stk[stk.length - 1] <= '9') {
                numStr = stk.pop() + numStr;
            }
            let substr = '';
            for(let i = 0; i < parseInt(numStr); i ++) {
                substr += str;
            }
            stk.push(substr);
        }
    }
    return stk.join('');
};
相关推荐
摇滚侠10 小时前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
通信小呆呆10 小时前
当算法有了“五感”:多模态数据融合如何向人体感官协同学习?
人工智能·学习·算法·机器学习·机器人
bush410 小时前
嵌入式linux学习记录十四、术语
linux·嵌入式
benben04410 小时前
强化学习之DQN算法族(基于gymnasium开发)
算法
载数而行52010 小时前
Linux 11 动态监控指令top
linux
何以解忧,唯有..11 小时前
Go语言循环语句详解:for、range与循环控制
开发语言·算法·golang
不会C语言的男孩12 小时前
Linux 系统编程 · 第 8 章:进程基础
linux·c语言
古城小栈12 小时前
Unix 与 Linux 异同小叙
linux·服务器·unix
想吃火锅100512 小时前
【leetcode】88.合并两个有序数组js
算法