Код Senior Стек и монотонный стек обновлено

Распаковка строки

Условие

Распакуй строку вида '3[a]2[bc]' → 'aaabcbc'. Вложенность любая: '3[a2[c]]' → 'accaccacc'.

Примеры

decodeString("3[a]2[bc]") // "aaabcbc"
decodeString("3[a2[c]]") // "accaccacc"
decodeString("abc") // "abc"

Как подойти

Вложенность → стек. Два стека вместо одного делают код симметричным: открывающая скобка сохраняет контекст, закрывающая его восстанавливает. Многозначные числа (number*10 + цифра) - то, на чём падают чаще всего.

Подсказки: 3
  1. Два стека: накопленные числа и накопленные куски строки.
  2. Число может быть многозначным - набирай его по цифрам.
  3. На закрывающей скобке достраивай текущий кусок к тому, что лежало снаружи.

Решите в тренажёре

Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.

Термины по теме