Sé que este es un tema que ya está aquí en stackoverflow, pero estos enfoques son los que no quiero seguir porque no los entiendo, por lo que es una pérdida de tiempo simplemente copiarlo.
Soy bastante nuevo en Javascript y me gustaría pedirles ayuda con los anagramas. Estoy trabajando en tareas de HackerRank y hay una con anagrama.
Actualmente, he creado algunos enfoques que creo que pueden conducir a un resultado correcto, pero no están terminados y me siento perdido después de horas de buscar una solución atractiva.
Aquí está la solución 1: creo que esto funcionaría, pero hay un problema con el conteo, me devolverá 1 ya que solo la letra "C" está en ambas cadenas, pero lo que quiero es devolver 2 ya que había dos "C". letras. ¿Hay alguna manera de cómo puedo lograrlo?
function makeAnagram(a, b) { let count = 0; arrayA = Array.from(a); arrayB = Array.from(b); const try3 = try1.concat(try2); let sameLetters = arrayA.filter(item => arrayB.includes(item)) { count++; } console.log(sameLetters); console.log(count); count = (try3.length - sameLetters2.length); } console.log(makeAnagram("cde", "abc"));La siguiente solución fue con ciclos, pero probablemente esto no sea suficiente y no sea correcto.
function makeAnagram(a, b) { let count = 0; let deleted = 0; for(let i = 0; i < a.length; i++) { for(let j = 1; j < b.length; j++) { if(arrayA[i] == arrayB[i]) { count++; } else { deleted++; } } }Y la última solución que estaba probando y me parece una buena solución es:
function makeAnagram(a, b) { const array2 = [...a.split(""), ...b.split("")] console.log(array2); const something = array2.reduce((acc, letter) => array2.includes(letter) ? [] : [...acc, letter],[]) } }Gracias