Код: Выделить всё
let sampleA = "3[2]5[8]";
// Expected output: "22288888"
let sampleB = "2[2[32]1[82]]";
// Expected output: "323282323282"
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;
}
< /code>
Это прекрасно работает для алфавитных входов, таких как «3 [A2 [C]]» «< /code> →" accaccacc "< /code>.
Но для моего случая с числовым содержанием, такими как" 2 [2 [32] 1 [82]] "< /code>, это не удастся, потому что: < /p>
. как отсчет повторяется.
Это не отличает числа внутри скобков от тех, кто наружу.>
Подробнее здесь: https://stackoverflow.com/questions/795 ... -javascrip