Menu
CoddyTech

Decode String

ŚrednieStosRekurencjapython iconjava iconcpp iconc iconjs icon+10

Zakodowany ciąg zapisuje powtarzający się tekst jako k[text]: text zapisany k razy z rzędu. Grupy mogą być zagnieżdżone, więc 2[a3[b]] oznacza abbbabbb. Mając zakodowany ciąg s, zwróć zdekodowany ciąg.

Litery znajdujące się poza wszystkimi nawiasami pozostają bez zmian. Każdy licznik jest dodatnią liczbą całkowitą zapisaną bezpośrednio przed [, a cyfry nie występują nigdzie indziej.

Funkcja

decodeString(s: string) → string
sstring
zakodowany ciąg znaków
Zwracastring
zdekodowany ciąg znaków

Ograniczenia

  • 1 ≤ s.length ≤ 104
  • s zawiera wyłącznie małe litery alfabetu angielskiego, cyfry, [ oraz ].
  • s jest prawidłowym kodowaniem: po każdym [ występuje liczba, a następnie pasujące ], i żadne nawiasy nie są puste.
  • Każda liczba k spełnia warunek 1 ≤ k ≤ 300 i nie ma zer wiodących.
  • Nawiasy mogą być zagnieżdżone na maksymalnie 100 poziomach.
  • Ciąg po dekodowaniu ma co najwyżej 5 × 104 znaków.

Przykłady

Wejście
s = "2[ab]3[c]x"
Wyjście
"ababcccx"
Wyjaśnienie
2[ab] daje abab, a 3[c] daje ccc. x znajduje się poza wszystkimi nawiasami i jest kopiowane bez zmian: ababcccx.
challenge icon

Pytanie dodatkowe

Zdekodowany ciąg znaków może być znacznie dłuższy niż dane wejściowe. Jak zwrócić znak na pozycji i bez tworzenia całego ciągu, jeśli jego długość może sięgać 10^18?

Zresetuj kod
def decodeString(s):
    # Wpisz tutaj kod

Test #1

Test #2

Test #3

Argument

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

Oczekiwany wynik

"ababcccx"