Menu
CoddyTech

Decode String

Una stringa codificata rappresenta il testo ripetuto come k[text], che indica text scritto k volte di seguito. I gruppi possono trovarsi all'interno di altri gruppi, quindi 2[a3[b]] indica abbbabbb. Scrivi una funzione che riceve una stringa codificata s e restituisce la stringa decodificata.

Le lettere che si trovano fuori da tutte le parentesi restano invariate. Ogni conteggio è un numero intero positivo scritto subito prima della sua [ e le cifre non compaiono in nessun altro punto.

Funzione

decodeString(s: string) → string
sstring
la stringa codificata
Restituiscestring
la stringa decodificata

Vincoli

  • 1 ≤ s.length ≤ 104
  • s contiene solo lettere inglesi minuscole, cifre, [ e ].
  • s è una codifica valida: ogni [ è preceduta da un conteggio e ha una ] corrispondente, e nessuna parentesi è vuota.
  • Ogni conteggio k soddisfa 1 ≤ k ≤ 300 e non ha zeri iniziali.
  • Le parentesi possono essere annidate fino a un massimo di 100 livelli.
  • La stringa decodificata contiene al massimo 5 × 104 caratteri.

Esempi

Input
s = "2[ab]3[c]x"
Output
"ababcccx"
Spiegazione
2[ab] dà abab e 3[c] dà ccc. La x si trova fuori da tutte le parentesi, quindi viene copiata così com'è, ottenendo ababcccx.

lock icon+22 test nascosti all’invio

challenge icon

Per approfondire

La stringa decodificata può essere molto più lunga dell'input. Come restituiresti solo il carattere nella posizione i della stringa decodificata, senza crearla, quando la sua lunghezza può arrivare a 10^18?

Ripristina il codice
def decodeString(s):
    # Scrivi il codice qui
Casi di test

Caso 1

Caso 2

Caso 3

Input

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

Atteso

"ababcccx"