Desarrollé una lógica para el problema anterior pero no pude obtener el resultado deseado .
function thirdOccurence(string){ var count = 0; var i=0; var result = 0; while(i<string.length){ if(string[i]=='e' && string[i+1]=='f' && string[i+2]=='g') { count = count+1; i+3; if(count==3) { result = i+1; break; } } else i++; } }*aquí la cadena es la entrada - abcefgacefgabcceftyefghjklop -la salida debería ser 20 ya que necesitamos encontrar la posición. Tengo un código de trabajo pero con una lógica diferente . Pero necesito saber por qué esto no funciona.
El problema estaba en la línea donde incrementas la variable i en 3: i += 3 . Esto significa que saltó 3 índices hacia adelante, antes de la condición final if(count==3) . Pero si incrementa i en 3 después de esta condición final, todo funciona como se esperaba :)
function thirdOccurence(string) { var count = 0; var i = 0; var result = 0; while (i < string.length) { if (string[i] === "e" && string[i + 1] === "f" && string[i + 2] === "g") { count += 1; if (count === 3) { result = i + 1; break; } i += 3; } else { i++; } } return result } console.log('result should be 20:', thirdOccurence('abcefgacefgabcceftyefghjklop'))