Как декодировать вложенные числовые шаблоны в струнах, таких как 2 [2 [32] 1 [82]] в JavaScript? [закрыто]Javascript

Форум по Javascript
Anonymous
Как декодировать вложенные числовые шаблоны в струнах, таких как 2 [2 [32] 1 [82]] в JavaScript? [закрыто]

Сообщение Anonymous »

Я пытаюсь решить вариант классической проблемы «декодировать строку» в JavaScript, но вместо символов или строк внутри скобков мои входы содержат числа - и они могут быть вложены. < /p>

Код: Выделить всё

let sampleA = "3[2]5[8]";
// Expected output: "22288888"

let sampleB = "2[2[32]1[82]]";
// Expected output: "323282323282"
Я начал с изменения стандартного декодера, который обрабатывает такие строки, как «3 [a] 2 [bc]» . Вот упрощенная версия того, что я попробовал: < /p>
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

Вернуться в «Javascript»