📚 10.字符串解码
💻 代码实现
typescript
/**
* @url https://leetcode.cn/problems/decode-string/description/?envType=study-plan-v2&envId=top-100-liked
*/
// @ts-nocheck
/**
* @param {string} s
* @return {string}
*/
// ps: 模拟栈操作
// "3[a]2[bc]"
var decodeString = function (s: string) {
const stack: Array<string> = []
if (s.length === 0) return ''
for (let i = 0; i < s.length; i++) {
const curWord = s[i]
if (curWord === ']') {
const tmpStrArray: string[] = []
while (stack.length && stack[stack.length - 1] !== '[') {
tmpStrArray.push(stack.pop())
}
stack.pop() // 去掉左括号
const numArr: number[] = [] // ps: 注意多个数字的情况 100[leetcode]
// ps: 易错
// let num = Number(stack.pop()) // 得到数字
while (stack[stack.length - 1] >= '0' && stack[stack.length - 1] <= '9') {
numArr.unshift(stack.pop())
}
let num = Number(numArr.join(''))
while (num--) {
stack.push(...tmpStrArray.toReversed())
}
} else {
stack.push(curWord)
}
}
return stack.join('')
};