Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

204
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda