🎉 Поздравляем! 🎉
Ты отлично справился с задачей! Это был непростой вызов, но ты нашёл правильное решение. Ты на шаг ближе к мастерству в программировании! Продолжай в том же духе, ведь каждый пройденный этап делает тебя ещё сильнее.
PythonLib
Питон для всех
Вам будет дана строка, "упакованная" по определенному правилу: k[sub] означает, что подстрока sub внутри квадратных скобок повторяется ровно k раз. Число k всегда является положительным целым числом. Ваша задача — "распаковать" исходную строку.
Учтите, что строки могут быть вложенными друг в друга. Например, 3[a2[c]] означает, что строка a2[c] повторяется 3 раза. Сначала нужно распаковать внутреннюю часть 2[c] в cc, затем подставить это в a..., получив acc, и в конце повторить acc 3 раза, чтобы получить accaccacc.
Одна строка без пробелов, содержащая строчные буквы латинского алфавита, цифры и квадратные скобки [ и ]. Гарантируется, что входная строка всегда корректна (нет незакрытых скобок, цифра всегда стоит перед открывающей скобкой и т.д.).
Одна строка — результат полной распаковки.
3[a]2[bc]
aaabcbc
def unpack_string(s: str) -> str:
"""
Распаковывает строку вида k[substring], включая вложенные структуры.
"""
stack = []
current_num = 0
current_string = ''
for char in s:
if char.isdigit():
# Собираем число, если оно многозначное (например, 10, 12)
current_num = current_num * 10 + int(char)
elif char == '[':
# Начало новой подстроки. Сохраняем текущее состояние в стек.
# Сохраняем текущую строку и число-повторитель для нее.
stack.append(current_string)
stack.append(current_num)
# Сбрасываем переменные для нового уровня вложенности.
current_string = ''
current_num = 0
elif char == ']':
# Конец подстроки. Достаем из стека предыдущее состояние.
num = stack.pop()
prev_string = stack.pop()
# Формируем новую текущую строку, повторяя распакованный фрагмент
# и добавляя его к строке предыдущего уровня.
current_string = prev_string + current_string * num
else:
# Просто добавляем букву к текущей строке.
current_string += char
return current_string
input_string = input()
result = unpack_string(input_string)
print(result)
🎉 Поздравляем! 🎉
Ты отлично справился с задачей! Это был непростой вызов, но ты нашёл правильное решение. Ты на шаг ближе к мастерству в программировании! Продолжай в том же духе, ведь каждый пройденный этап делает тебя ещё сильнее.
AD
Реклама
Запускаем ваш код...