Насколько я знаю, НЕТ способа найти массив внутри другого без линейного поиска. String.indexOf использует линейный поиск, прямо внутри библиотеки.
Вы должны написать небольшую библиотеку indexOf, которая будет принимать два массива, тогда у вас будет код, похожий на indexOf.
Но как бы вы это ни делали, это линейный поиск под одеялом.
редактирование:
Посмотрев на ответ @ ahmadabolkader, я как бы забрал это. Хотя это все еще линейный поиск, это не так просто, как просто «реализовать его», если вы не ограничены достаточно маленькими наборами тестов / результатами.
Проблема возникает, когда вы хотите посмотреть, вписывается ли ... aaaaaaaaaaaaaaaaaab в строку (x1000000) ... aaaaaaaaab (другими словами, строки, которые обычно совпадают с большинством мест в строке поиска).
Я думал, что, как только вы найдете совпадение с первым персонажем, вы просто проверите все последующие символы один на один, но это качество будет ужасно ухудшаться, когда большинство символов совпадают большую часть времени. В ответе @ a12r был метод скользящего хэша, который звучал намного лучше, если это реальная проблема, а не просто задание.
Я просто собираюсь проголосовать за ответ @ a12r из-за этих потрясающих ссылок на Википедию.