Code: Select all
let sampleA = "3[2]5[8]";
// Expected output: "22288888"
let sampleB = "2[2[32]1[82]]";
// Expected output: "323282323282"
Code: Select all
function decodeString(s) {
const stack = [];
let current = "";
let k = 0;
for (let ch of s) {
if (!isNaN(ch)) {
k = k * 10 + parseInt(ch);
} else if (ch === '[') {
stack.push([current, k]);
current = "";
k = 0;
} else if (ch === ']') {
const [prev, repeat] = stack.pop();
current = prev + current.repeat(repeat);
} else {
current += ch;
}
}
return current;
}
But for my case with numeric content like "2[2[32]1[82]]", it fails because:
It treats numbers only as repeat zählt.>