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

210
Visualizações
¿Por qué mi código no funciona bien reemplazando caracteres de cadenas?

El ejercicio: El objetivo de este ejercicio es convertir una cadena en una nueva cadena donde cada carácter en la nueva cadena es "(" si ese carácter aparece solo una vez en la cadena original, o ")" si ese carácter aparece más de una vez en la cadena original. Ignore las mayúsculas al determinar si un carácter es un duplicado.

Ejemplos "din" => "((("

"retroceder" => "()()()"

"Éxito" => ")())())"

"((@" => "))(("

Mi código era así:

 function duplicateEncode(word) { let str = ""; for (let i = 0; i < word.length; i++) { //This iteration is to examine every character in the string; for (let j = 0; j < word.length; j++) { //This iteration is to compare every character to every other inside the string, in order to check if there is any repetition if (j === i) { //This first conditon was selected because a character is not supposed to be compared to itself continue; } else if (word[i] === word[j]) { str = str + ")"; break; } else if (j !== word.length - 1) { continue; } else if (j === word.length - 1) { str = str + "("; } } } return str; }

¿Alguien me puede ayudar a averiguar por qué no funciona para todos los casos?

Por ejemplo:

 console.log(duplicateEncode("abc"));

Debería devolver ((( en lugar de ((

Pero,

 console.log(duplicateEncode("mulherm"));

devuelve exactamente lo que se suponía: )((((()

Aparentemente, cada vez que una cadena no tiene un carácter que se repita, la función devuelve una cadena sin el primer elemento. Pero cada vez que la cadena tiene al menos un elemento que se repite, devuelve exactamente lo que se supone que debe hacer.

¿Qué está pasando con mi código?

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

0

Creo que el problema es que cuando usa su fragmento a continuación, evita ingresar al último bucle.

 if (j === i) { continue; }

El problema está presente cada vez que una palabra con una letra no duplicada es la última. es decir

Esto funciona

 console.log(duplicateEncode("aba")); //returns )()

Esto no lo hace

 console.log(duplicateEncode("aab")); //returns ))

Lo que podría hacer es agregar una declaración de que cuando

 i === word.length - 1

y no hay "(" en su variable str , puede agregar otro ")" a su str.

En otras palabras, si no ha encontrado caracteres duplicados después de verificar la última posición anterior al iterar sobre toda la palabra, se garantiza que la última también será única.

Registros de la consola a continuación

 function duplicateEncode(word) { let str = ""; for (let i = 0; i < word.length; i++) { //This iteration is to examine every character in the string; for (let j = 0; j < word.length; j++) { //This iteration is to compare every character to every other inside the string, in order to check if there is any repetition console.log(i); console.log(j); console.log(str); if (j === i) { //This first conditon was selected because a character is not supposed to be compared to itself console.log("continue") continue; } else if (word[i] === word[j]) { console.log("append )") str = str + ")"; break; } else if (j !== word.length - 1) { console.log("j !== length") continue; } else if (j === word.length - 1) { console.log("append (") str = str + "("; } } } return str; }
about 4 years ago · Juan Pablo Isaza Relatório

0

Use un depurador para recorrer su código línea por línea. Hay casos en los que el ciclo interno se completa sin cumplir nunca una de las condiciones para agregar un carácter a la cadena.

En su lugar, use un indicador booleano para indicar si la letra está duplicada, configúrelo dentro del bucle (lógica mucho más simple), luego, después del bucle, haga str += (found ? ')' : '('); . Esto garantiza que agregue exactamente un carácter a la cadena de salida por iteración del ciclo externo.

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