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

106
Vistas
String Match challenge in Javascript

if anybody can point or just give a clue what I did wrong, would be very much appreciated. So the task is :

Given 2 strings, a and b, return the number of the positions where they contain the same length 2 substring. So "xxcaazz" and "xxbaaz" yields 3, since the "xx" "xx", "aa", and "az" substrings appear in the same place in both strings.

function('xxcaazz', 'xxbaaz') should return 3

function('abc', 'abc') should return 2

function('abc', 'axc') should return 0

My code:

function stringMatch(a, b){

//  convert both strings to arrays with split method

  let arrA = a.split("")
  let arrB = b.split("")

//  create 2 empty arrays to feel in with symbol combinations

  let arrOne = [];
  let arrTwo = [];

// loop through the first array arrA and push elements to empty arrayOne

  for ( let i = 0; i < arrA.length ; i++ ) {
      arrOne.push(arrA[i]+arrA[i+1])
  }
// loop through the first array arrB and push elements to empty arrayTwo

  for ( let i = 0; i < arrB.length ; i++ ) {
      arrTwo.push(arrB[i]+arrB[i+1])
  }
//  create a new array of the matching elements from arrOne and arrTwo

  let newArray = arrOne.filter(value => arrTwo.includes(value))

//   return the length 0f the newArray - that's supposed to be the answer

  return newArray.length
}

Thanks for help!

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

0

On the last iteration of your loops, there won't be "next" character, arrB[i+1] will be undefined. The easiest way to solve that is to only loop until the second to last character, or until i < arrB.length - 1.

for ( let i = 0; i < arrB.length - 1; i++ ) {
      arrTwo.push(arrB[i]+arrB[i+1])
  }

e.g...

console.log(stringMatch('xxcaazz', 'xxbaaz')); //should return 3
console.log(stringMatch('abc', 'abc')); // should return 2
console.log(stringMatch('abc', 'axc')); //should return 0

function stringMatch(a, b){

//  convert both strings to arrays with split method

  let arrA = a.split("")
  let arrB = b.split("")

//  create 2 empty arrays to feel in with symbol combinations

  let arrOne = [];
  let arrTwo = [];

// loop through the first array arrA and push elements to empty arrayOne

  for ( let i = 0; i < arrA.length -1 ; i++ ) {
      arrOne.push(arrA[i]+arrA[i+1])
  }
// loop through the first array arrB and push elements to empty arrayTwo

  for ( let i = 0; i < arrB.length - 1; i++ ) {
      arrTwo.push(arrB[i]+arrB[i+1])
  }
  
//  create a new array of the matching elements from arrOne and arrTwo

  let newArray = arrOne.filter(value => arrTwo.includes(value))

//   return the length 0f the newArray - that's supposed to be the answer

  return newArray.length
}

As a bonus, here's my own solution...

console.log(stringMatch('xxcaazz', 'xxbaaz')); //should return 3
console.log(stringMatch('abc', 'abc')); // should return 2
console.log(stringMatch('abc', 'axc')); //should return 0

function stringMatch(a, b){
  var matches = 0;
  for(let i=a.length-1; i--;){
    let s1 = a.substring(i, i+2);
    let s2 = b.substring(i, i+2);
    if(s1 == s2) matches++;
  }
  return matches;
}

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