Menu
CoddyTech

Decode String

ŚrednieStosRekurencjapython iconjava iconcpp iconc iconjs icon+10

Zakodowany ciąg zapisuje powtarzający się tekst jako k[text], co oznacza text zapisany k razy z rzędu. Grupy mogą znajdować się wewnątrz innych grup, więc 2[a3[b]] oznacza abbbabbb. Napisz funkcję, która otrzymuje zakodowany ciąg s i zwraca zdekodowany ciąg.

Litery znajdujące się poza nawiasami pozostają bez zmian. Każda liczba powtórzeń 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, [ i ].
  • s to prawidłowe kodowanie: po każdym [ występuje liczba, a nawias ma pasujący ]; żaden nawias nie jest pusty.
  • Każda liczba k spełnia warunek 1 ≤ k ≤ 300 i nie ma zera wiodącego.
  • Nawiasy mogą być zagnieżdżone maksymalnie na 100 poziomach.
  • Odszyfrowany ciąg znaków 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, więc jest kopiowane bez zmian, co daje ababcccx.

lock icon+22 ukrytych testów przy wysłaniu

challenge icon

Pytanie dodatkowe

Zdekodowany ciąg może być znacznie dłuższy niż dane wejściowe. Jak zwrócić tylko znak na pozycji i zdekodowanego ciągu, nie tworząc go, gdy jego długość może osiągnąć 10^18?

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

Przypadek 1

Przypadek 2

Przypadek 3

Wejście

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

Oczekiwane

"ababcccx"