Как декодировать вложенные числовые шаблоны в струнах, таких как 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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