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

208
Vistas
necesito encontrar la distancia entre dos caracteres en la cadena js. tengo una solución pero no puedo entender el fragmento de código relacionado con la declaración if

La tarea era escribir una función subLength() que toma 2 parámetros, una cadena y un solo carácter. La función debe buscar en la cadena las dos apariciones del carácter y devolver la longitud entre ellas, incluidos los 2 caracteres. Si hay menos de 2 o más de 2 ocurrencias del carácter, la función debería devolver 0.

 const subLength = (str, char) => { let charCount = 0; let len = -1; for (let i=0; i<str.length; i++) { if (str[i] == char) { charCount++; if (charCount > 2) { return 0; } // could somebody explain why -1 is equal to len and then len is reassigned to i??? if (len == -1) { len = i; } else { len = i - len + 1 } } } if (charCount < 2) { return 0; } return len; };
about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

en la primera aparición len= -1 entonces: (len ==-1) se convirtió en verdadero; y len se cambia a i entonces len=i; en la segunda ocurrencia len no es -1 entonces:

 len = i - len -1;

en esencia, en la expresión anterior, len mantiene el índice de la primera ocurrencia, e i tiene el índice de la segunda ocurrencia, por lo que la diferencia será, la diferencia entre dos ocurrencias, 'qweraq': primera ocurrencia: 0, segunda: 6 .6-0-1= 5 es diferencia;

about 4 years ago · Juan Pablo Isaza Denunciar

0

Así es como me las arreglo para reescribir su código. Espero que esto ayude.

 const subLength = (str, char) => { const arr = str.split(''); let count = 0; arr.forEach(letter => letter === char ? count++ : '') const result = arr.some(letter => { if (arr.indexOf(char) !== arr.lastIndexOf(char) && count == 2) { return true } return false }) return result ? Math.abs(arr.indexOf(char) - arr.lastIndexOf(char)) + 1 : 0 }

about 4 years ago · Juan Pablo Isaza Denunciar

0

Si bien es posible calcular los índices y el conteo dentro de un solo bucle, dada la trivialidad, preferiría los métodos API estándar para escanear. siempre se puede optimizar más tarde si la aplicación realmente lo requiere.

Primero, convertimos la cadena en una matriz para que podamos filtrar las coincidencias con el carácter de entrada y derivar la longitud.

Solo si hay 2 ocurrencias, calculamos la distancia entre el uso de los métodos indexOf y lastIndexOf en la cadena (tenga en cuenta que estos solo requerirán un segundo escaneo completo de la cadena si las dos ocurrencias son consecutivas).

De lo contrario, el resultado debería ser 0.

 const subLength = (str, chr) => { const count = str.split('').filter(ltr => ltr === chr).length if (count === 2) { return (str.lastIndexOf(chr) - str.indexOf(chr)) + 1 } return 0 } console.log(subLength('asddfghvcba', 'a')) console.log(subLength('asddfghvcba', 'x')) console.log(subLength('aaaaaaaaaaa', 'a'))

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