Menu
CoddyTech

Decode String

Ein codierter String schreibt wiederholten Text als k[text], was für text steht, das k-mal hintereinander geschrieben wird. Gruppen können innerhalb anderer Gruppen stehen, daher steht 2[a3[b]] für abbbabbb. Schreibe eine Funktion, die einen codierten String s erhält und den dekodierten String zurückgibt.

Buchstaben außerhalb aller Klammern bleiben unverändert. Jede Anzahl ist eine positive ganze Zahl, die direkt vor ihrem [ steht, und Ziffern kommen nirgendwo sonst vor.

Funktion

decodeString(s: string) → string
sstring
die codierte Zeichenfolge
Gibt zurückstring
die dekodierte Zeichenfolge

Einschränkungen

  • 1 ≤ s.length ≤ 104
  • s enthält ausschließlich englische Kleinbuchstaben, Ziffern, [ und ].
  • s ist eine gültige Kodierung: Auf jede [ folgt eine Anzahl, und zu ihr gehört eine passende ]; außerdem sind keine Klammern leer.
  • Jeder Zählwert k erfüllt 1 ≤ k ≤ 300 und hat keine führende Null.
  • Klammern sind höchstens 100 Ebenen tief verschachtelt.
  • Die dekodierte Zeichenfolge hat höchstens 5 × 104 Zeichen.

Beispiele

Eingabe
s = "2[ab]3[c]x"
Ausgabe
"ababcccx"
Erklärung
2[ab] ergibt abab und 3[c] ergibt ccc. Das x steht außerhalb aller Klammern und wird daher unverändert übernommen. Das ergibt ababcccx.

lock icon+22 versteckte Tests beim Einreichen

challenge icon

Weiterführende Frage

Die dekodierte Zeichenkette kann viel länger als die Eingabe sein. Wie würdest du nur das Zeichen an Position i der dekodierten Zeichenkette zurückgeben, ohne sie aufzubauen, wenn die dekodierte Länge 10^18 erreichen kann?

Code zurücksetzen
def decodeString(s):
    # Schreibe hier den Code
Testfälle

Fall 1

Fall 2

Fall 3

Eingabe

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

Erwartet

"ababcccx"