Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

233
Vistas
Cómo obtener palabras de una matriz cuyo carácter aparece exactamente dos veces

Tengo una matriz que contiene cadenas. Tengo que leer las palabras una por una y generar palabras que tengan cualquier carácter que aparezca exactamente dos veces. Pero mi código también muestra 3 o más caracteres iguales. ¿Cómo puedo generar las palabras cuyo único carácter aparece dos veces? Por ejemplo, no mostrar: "aaaa" o "aaab"

 const words = [ "asdf", "fdas", "asds", "d fm", "dfaa", "aaaa", "aabb", "aaabb" ]; function checkString(text,index){ if((text.length - index) == 0 ){ //stop condition return false; }else{ return checkString(text,index + 1) || text.substr(0, index).indexOf(text[index])!=-1; } } // example Data to test for(var idx in words){ var txt = words[idx]; if(checkString(txt,0)) { console.log(txt); } }

 const words = [ "asdf", "fdas", "asds", "d fm", "dfaa", "aaaa", "aabb", "aaabb" ]; /* Output have to be : asds dfaa aabb aaabb */
about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

 const words = [ "asdf", "fdas", "asds", "d fm", "dfaa", "aaaa", "aabb", "aaabb" ]; function checkString(text) { //create a map to store the frequency of characters let map = new Map(); for(let ch of text){ if(map.has(ch)){ map.set(ch, map.get(ch)+1); }else{ map.set(ch, 1); } } //now check if frequency of any character is equal to 2 return [...map.values()].some(x => x == 2); } // example Data to test for (let txt of words) { if (checkString(txt)) { console.log(txt); } }

about 4 years ago · Juan Pablo Isaza Denunciar

0

Puede crear un objeto que asigne letras en su cadena de entrada a sus ocurrencias en él, luego filtre las letras en función de si aparecen dos veces:

 const checkString = (inputString) => { // Build an empty object const occurrences = {}; for (let char of inputString) { // For each character in the input string, add one to its occurrence count // If it has never appeared until now, occurrences[char] + 1 will evaluate // to NaN, and Nan || 1 is 1 occurrences[char] = occurrences[char] + 1 || 1; } // Get the characters appearing in the string const charsInInputString = Object.keys(occurrences); // Extract only the characters appearing exactly twice const charsAppearingTwice = charsInInputString.filter( (char) => occurrences[char] === 2 ); // Return true if there is at least one such character return charsAppearingTwice.length > 0; };

Su matriz final de palabras correctas sería entonces words.filter(checkString) .

Si desea formatear las palabras para que se muestren como una sola cadena , con un separador de espacios, puede usar el método .join :

 const checkedWords = words.filter(checkString).join(" "); // = asds dfaa aabb aaabb
about 4 years ago · Juan Pablo Isaza Denunciar

0

Una mejor manera de hacerlo es escribir una función que tome una cadena y cuente cuántos de cada carácter contiene, y luego verifique si hay un carácter que aparece exactamente dos veces.

Algo en la línea de

 function checkString(text){ const charAppearances = {}; text.split('').forEach( character => { charAppearances[character] = (charAppearances[character] || 0) + 1 }) return Object.values(charAppearances).includes(2); }

El propósito de charAppearances es contar cuántas veces aparece un carácter, por ejemplo para la cadena 'asdf' será {a: 1, s: 1, d:1, f:1}

La sección forEach itera sobre los caracteres de la cadena y actualiza el recuento del carácter actual ( charAppearances[character] = (charAppearances[character] || 0) + 1 significa "Si el character existe en charAppearances , agréguele 1, de lo contrario sume 1 a 0, lo que dará como resultado 1)

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda