Сжатие строки с восстановлением по правилу повторений

Go Сложный strings

Задача «Сжатие строки с восстановлением по правилу повторений»

Дана строка, состоящая из букв латинского алфавита (a-z) и цифр (0-9). Строка закодирована по следующему правилу: каждая группа символов, за которой следует число, обозначает, что эта группа должна быть повторена указанное количество раз. Например, 'ab3c2' означает 'abababcc'. Группа может быть как одним символом, так и последовательностью символов, заключенной в квадратные скобки. Если группа не содержит скобок, то число относится к последнему символу. Если число отсутствует, считается, что повторение равно 1. Необходимо написать программу, которая принимает закодированную строку и выводит раскодированную строку. Длина раскодированной строки не превышает 10^6 символов.

Формат ввода

Одна строка, содержащая закодированную последовательность. Длина строки не превышает 1000 символов.

Формат вывода

Одна строка — раскодированная последовательность.

Примеры

Пример 1

ВВОД
x2y3z
ВЫВОД
xxyyyz

Пример 2

ВВОД
a2b[cd]3e
ВЫВОД
aabcdcdcde

Пример 3

ВВОД
5 1 null root 10 2 1 child1 5 3 1 child2 7 4 2 grandchild 3 5 3 another 2
ВЫВОД
main.go