Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

204
Views
¿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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!