Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

206
Views
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 answers
Answer question

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 Report

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!