Menu
CoddyTech

Decode String

Закодированная строка записывает повторяющийся текст в виде k[text], что означает, что text записан k раз подряд. Группы могут находиться внутри других групп, поэтому 2[a3[b]] означает abbbabbb. Напишите функцию, которая получает закодированную строку s и возвращает декодированную строку.

Буквы вне всех скобок остаются без изменений. Каждое число повторений — положительное целое число, записанное непосредственно перед [, и цифры больше нигде не встречаются.

Функция

decodeString(s: string) → string
sstring
закодированная строка
Возвращаетstring
декодированная строка

Ограничения

  • 1 ≤ s.length ≤ 104
  • s содержит только строчные английские буквы, цифры, [ и ].
  • s — допустимое кодирование: за каждым [ следует количество, и ему соответствует ], при этом пустых скобок нет.
  • Каждое число k удовлетворяет условию 1 ≤ k ≤ 300 и не содержит ведущих нулей.
  • Скобки могут быть вложены максимум на 100 уровней.
  • Декодированная строка содержит не более 5 × 104 символов.

Примеры

Ввод
s = "2[ab]3[c]x"
Вывод
"ababcccx"
Пояснение
2[ab] даёт abab, а 3[c] даёт ccc. x находится за пределами всех скобок, поэтому копируется без изменений, в результате получается ababcccx.

lock icon+22 скрытых тестов при отправке

challenge icon

Дополнительный вопрос

Декодированная строка может быть намного длиннее входных данных. Как вернуть только символ на позиции i в декодированной строке, не создавая её целиком, если её длина может достигать 10^18?

Сбросить код
def decodeString(s):
    # Напишите код здесь
Тестовые случаи

Случай 1

Случай 2

Случай 3

Ввод

s = "2[ab]3[c]x"

Ожидается

"ababcccx"