Menu
CoddyTech

Decode String

Uma string codificada representa texto repetido como k[text], que significa text escrito k vezes seguidas. Grupos podem ficar dentro de outros grupos, então 2[a3[b]] significa abbbabbb. Escreva uma função que receba uma string codificada s e retorne a string decodificada.

Letras fora de todos os colchetes permanecem como estão. Cada contagem é um número inteiro positivo escrito imediatamente antes de seu [, e os dígitos não aparecem em nenhum outro lugar.

Função

decodeString(s: string) → string
sstring
a string codificada
Retornastring
a string decodificada

Restrições

  • 1 ≤ s.length ≤ 104
  • s contém apenas letras minúsculas do inglês, dígitos, [ e ].
  • s é uma codificação válida: cada [ vem após uma contagem e tem um ] correspondente, e nenhum colchete está vazio.
  • Toda contagem k satisfaz 1 ≤ k ≤ 300 e não tem zero à esquerda.
  • Os colchetes podem ser aninhados em até 100 níveis de profundidade.
  • A string decodificada tem no máximo 5 × 104 caracteres.

Exemplos

Entrada
s = "2[ab]3[c]x"
Saída
"ababcccx"
Explicação
2[ab] gera abab e 3[c] gera ccc. O x fica fora de todos os colchetes, então é copiado como está, o que resulta em ababcccx.

lock icon+22 testes ocultos ao enviar

challenge icon

Para ir além

A string decodificada pode ser muito mais longa do que a entrada. Como você retornaria apenas o caractere na posição i da string decodificada, sem construí-la, quando o comprimento decodificado pode chegar a 10^18?

Redefinir código
def decodeString(s):
    # Escreva o código aqui
Casos de teste

Caso 1

Caso 2

Caso 3

Entrada

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

Esperado

"ababcccx"