394. Decode String

2021-02-27  本文已影响0人  jluemmmm

给定一个经过编码的字符串,返回它解码后的字符串。

编码规则为:k[encoded_string],表示方括号内部的字字符串重复 k 次。假设输入字符串总是有效的,输入字符串没有额外的空格,且输入的方括号总是符合格式要求的。原始数据不包含数字,所有的数字只表示重复的 k 次。

循环

从第一个右括号开始,解析左边的括号,进行循环处理。时间复杂度O(N),空间复杂度O(N)

/**
 * @param {string} s
 * @return {string}
 */
var decodeString = function(s) {
    while(s.indexOf(']') !== -1) {
        let right = s.indexOf(']')
        let left = s.substring(0, right).lastIndexOf('[')
        let i = left
        
        while(i > 0 && /[0-9]/.test(s[i - 1])) {
            i--
        }
        let num = s.substring(i, left) - '0'
        let str = s.substring(left + 1, right)
        let cur = ''
        while(num > 0) {
            cur += str
            num--
        }
        s = s.substring(0, i) + cur + s.substring(right + 1)
    }
    return s
};
上一篇 下一篇

猜你喜欢

热点阅读