🎉 Glückwunsch! 🎉
Du hast die Aufgabe hervorragend gelöst! Es war schwierig, aber du hast die Lösung gefunden. Du bist dem Meister einen Schritt näher! Mach weiter so.
ProgerLib Python für alle
Sie erhalten eine Zeile, die nach einer bestimmten Regel "verpackt" ist: k[sub] bedeutet, dass der Teilstring sub innerhalb der eckigen Klammern genau k Mal wiederholt wird. Die Zahl k ist immer eine positive ganze Zahl. Ihre Aufgabe ist es, die ursprüngliche Zeile zu "entpacken".
Beachten Sie, dass die Zeilen ineinander verschachtelt sein können. Zum Beispiel bedeutet 3[a2[c]] , dass die Zeile a2[c] 3 Mal wiederholt wird. Zuerst müssen Sie den inneren Teil 2[c] zu cc entpacken, dann in a... einsetzen, um acc zu erhalten, und schließlich acc 3 Mal wiederholen, um accaccacc zu erhalten.
Eine Zeile ohne Lücken, die die Kleinbuchstaben des lateinischen Alphabets, die Zahlen und die eckigen Klammern [ und ] enthält. Es ist garantiert, dass die Eingabezeile immer korrekt ist (es gibt keine ungeschlossenen Klammern, die Zahl steht immer vor einer öffnenden Klammer usw.).
Eine Zeile & mdash; Das Ergebnis der vollständigen Entpackung.
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)
🎉 Glückwunsch! 🎉
Du hast die Aufgabe hervorragend gelöst! Es war schwierig, aber du hast die Lösung gefunden. Du bist dem Meister einen Schritt näher! Mach weiter so.
AD
Werbung
Führe deinen Code aus...