Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

198
Visualizações
Descomprima una cadena, repita los caracteres `n` veces

Tengo el siguiente enunciado del problema:

Escriba una función, sin comprimir, que tome una cadena como argumento. La cadena de entrada se formateará en varios grupos de acuerdo con el siguiente patrón:

número + carácter

por ejemplo, '2c' o '3a'.

La función debe devolver una versión sin comprimir de la cadena donde cada 'char' de un grupo se repite 'number' veces consecutivas. Puede suponer que la cadena de entrada está bien formada de acuerdo con el patrón mencionado anteriormente.

test_00: descomprimir ("2c3a1t"); // -> 'caaaa'

Aquí está mi código que está usando una pila. El problema es que solo devuelve 'cc' y no puedo entender por qué. He registrado en la consola lo que entra en IF ELSE y estoy presionando ambos, así que no entiendo por qué nada se empuja a la pila.

Realmente agradecería la ayuda si alguien puede detectar lo que me estoy perdiendo.

 const uncompress = (s) => { const nums = '23456789'; const stack = []; for (let char of s) { if (nums.includes(char)) { stack.push(Number(char)); } else { const num = stack.pop(); stack.push(char.repeat(num)); }; }; return stack.join(''); }; console.log(uncompress("2c3a1t")); // -> 'ccaaat'

about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Así es como lo haría:

Divide la cadena en pares de números y caracteres:

 str.match(/\d+[a-zA-Z]/g)

Y reduzca esa matriz a una cadena, mientras toma cada valor de la matriz, obtiene el carácter de ella ( cv.match(/[a-zA-Z]/)[0] ) y lo repite de acuerdo con el número ( .repeat(parseInt(cv)) )

 const uncompress = str => str.match(/\d+[a-zA-Z]/g).reduce((acc, cv) => acc + cv.match(/[a-zA-Z]/)[0].repeat(parseInt(cv)), "") console.log(uncompress("2c3a1t")) console.log(uncompress("27b1d8g"))

about 4 years ago · Juan Pablo Isaza Relatório

0

Y así pude escribir el código que pasó el caso de prueba:

 const nums = '123456789'; const stack = []; for (let char of s) { if (nums.includes(char)) { stack.push(Number(char)); } else { let num = ''; while (nums.includes(stack[stack.length - 1])) { num += stack.pop(); } stack.push(char.repeat(num)); }; }; return stack.join(''); };
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda