Menu
CoddyTech

Decode String

Une chaîne encodée représente un texte répété sous la forme k[text], ce qui signifie que text est écrit k fois à la suite. Les groupes peuvent être imbriqués, ainsi 2[a3[b]] signifie abbbabbb. Écris une fonction qui reçoit une chaîne encodée s et renvoie la chaîne décodée.

Les lettres situées en dehors de toutes les crochets restent inchangées. Chaque nombre de répétitions est un entier positif écrit juste avant son [, et les chiffres n'apparaissent nulle part ailleurs.

Fonction

decodeString(s: string) → string
sstring
la chaîne encodée
Renvoiestring
la chaîne décodée

Contraintes

  • 1 ≤ s.length ≤ 104
  • s contient uniquement des lettres minuscules anglaises, des chiffres, [ et ].
  • s est un encodage valide : chaque [ suit un compte et possède un ] correspondant, et aucune paire de crochets n'est vide.
  • Chaque nombre k vérifie 1 ≤ k ≤ 300 et ne comporte aucun zéro initial.
  • Les crochets peuvent s’imbriquer sur 100 niveaux de profondeur au maximum.
  • La chaîne décodée comporte au plus 5 × 104 caractères.

Exemples

Entrée
s = "2[ab]3[c]x"
Sortie
"ababcccx"
Explication
2[ab] donne abab et 3[c] donne ccc. Le x se trouve en dehors de toutes les parenthèses, il est donc recopié tel quel, ce qui donne ababcccx.

lock icon+22 tests cachés à la soumission

challenge icon

Pour aller plus loin

La chaîne décodée peut être bien plus longue que l’entrée. Comment renverrais-tu uniquement le caractère à la position i de la chaîne décodée, sans la construire, alors que sa longueur peut atteindre 10^18 ?

Réinitialiser le code
def decodeString(s):
    # Écrivez le code ici
Cas de test

Cas 1

Cas 2

Cas 3

Entrée

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

Attendu

"ababcccx"