编辑代码

function changeString(s: string): string {
    let arr = s.split(''), times = '', temp = '', res = ''
    let point = 0, level = 1
    while (point < s.length) {
        if (s[point] == '1' || s[point] == '2' || s[point] == '3' || s[point] == '4' || s[point] == '5' || s[point] == '6' || s[point] == '7' || s[point] == '8' || s[point] == '9' || s[point] == '0') {
            times += s[point]
            point++
        } else if (s[point] == '[') {
            point++
            while (s[point] !== ']' || level > 1) {
                if (s[point] == '1' || s[point] == '2' || s[point] == '3' || s[point] == '4' || s[point] == '5' || s[point] == '6' || s[point] == '7' || s[point] == '8' || s[point] == '9' || s[point] == '0') {
                    level++
                } else if (s[point] == ']') {
                    level--
                }
                temp += s[point]
                point++
            }
            point++
            temp = changeString(temp)
            for (let i = 0; i < Number(times); i++) {
                res += temp
            }
            times = ''
            temp = ''
        } else {
            res += s[point]
            point++
        }
    }

    return res
}

console.log(changeString('2[abc3[a]]bcd2[r]'))