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.
challenge icon

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

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

Сбросить код
def decodeString(s):
    # Напишите код здесь

Тест #1

Тест #2

Тест #3

Аргумент

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

Ожидаемый вывод

"ababcccx"