394. Decode String

25 年 8 月 27 日 星期三
191 字
1 分钟

394. Decode String

Screenshot 2025-08-27 at 10.23.22 am

迭代

https://leetcode.cn/problems/decode-string/solutions/19447/decode-string-fu-zhu-zhan-fa-di-gui-fa-by-jyd

img

执行到最后一个字符串的时候,res会是最后一段字符串的值。

当遇到]的时候,会取出前一个结果,作为之后运算的res,如果之后遇到 [ 再整体压入栈中。

js
/**
 * @param {string} s
 * @return {string}
 */
var decodeString = function (s) {
  const stack = []
  let k = 0
  let res = ''
  for (const c of s) {
    if ('0' <= c && c <= '9') {
      // 数字
      k = k * 10 + Number(c) // 多位数字的情况
    } else if ('a' <= c && c <= 'z') {
      // 不支持链式比较 'a' <= c <= 'z'
      res += c
    } else if (c === '[') {
      // stack push
      stack.push([k, res])
      k = 0
      res = ''
    } else {
      // ']'
      const [pre_k, pre_res] = stack.pop()
      res = pre_res + res.repeat(pre_k)
    }
  }
  return res
}

文章标题:394. Decode String

文章作者:Sirui Chen

文章链接:https://blog.siruichen.me/posts/394_decode_string[复制]

最后修改时间:


商业转载请联系站长获得授权,非商业转载请注明本文出处及文章链接,您可以自由地在任何媒体以任何形式复制和分发作品,也可以修改和创作,但是分发衍生作品时必须采用相同的许可协议。
本文采用CC BY-NC-SA 4.0进行许可。