题目地址: 链接
思路: 栈。
- 遇到非
]字符,压入栈 - 遇到
]字符,将[ ]中的字符str拿出来,[前面的数字num拿出来,根据重复num次str字符,并将其压入栈。
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('');
};