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

135
Vistas
common character count challenge on Code signal

When I loop through both arrays I am getting a pass on most of the tests. One of the tests creates a problem as continues the nest loop against the first loop even when the matched element is removed.

Input: s1: "abca" s2: "xyzbac"

Heres my code:

function commonCharacterCount(s1, s2) {
    const arrayOne = s1.split("")
    const arrayTwo = s2.split("")
    var matches = [];

    for (let i = 0; i < arrayOne.length; i++) {
        for (let j = 0; j < arrayTwo.length; j++) {
            console.log(arrayTwo[j],arrayOne[i], matches)
           if (arrayOne[i] === arrayTwo[j]) {
               matches.push(arrayOne[i])
               arrayOne.splice(arrayOne[i], 1)
        
           }
        }
    }
    return matches.length
}

I checked the console log on test 3 which is the only one that is failing and I can see there is an issue skipping over the second item "b".

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Since you are slicing arrayOne you remove an item from arrayOne and this means that it will skip over an item because the variable i gets incremented by 1 but the arrayOne loses an item. So you get something like this.

arrayOne = ["a","b","c","d"]  
i = 0  
arrayOne[i] results to "a"

now you find a match with arrayTwo and you slice arrayOne at the index i of your match so arrayOne becomes

arrayOne = ["b","c","d"]  
//however you still increment i by one so i becomes  
i = 1  
//so now arrayOne[i] becomes  
arrayOne[i] results to "c"

Now I'm not sure my explanation is any good but I have two solutions. 1 doesn't splice and the other does but when it does it decrements i by one.

option 1

function commonCharacterCount(s1, s2) {
    const arrayOne = s1.split("")
    const arrayTwo = s2.split("")
    var matches = [];

    for (let i = 0; i < arrayOne.length; i++) {
        for (let j = 0; j < arrayTwo.length; j++) {
            console.log(arrayTwo[j],arrayOne[i], matches)
           if (arrayOne[i] === arrayTwo[j]) {
               matches.push(arrayOne[i])        
           }
        }
    }
    return matches.length
}

option 2

function commonCharacterCount(s1, s2) {
    const arrayOne = s1.split("")
    const arrayTwo = s2.split("")
    var matches = [];

    for (let i = 0; i < arrayOne.length; i++) {
        for (let j = 0; j < arrayTwo.length; j++) {
            console.log(arrayTwo[j],arrayOne[i], matches)
           if (arrayOne[i] === arrayTwo[j]) {
               matches.push(arrayOne[i])
               arrayOne.splice(arrayOne[i], 1)
               i--
           }
        }
    }
    return matches.length
}
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