Я пытался использовать несколько реализаций, но во всех них были ошибки.
Поиск в SO дал мне http://www -igm.univ-mlv.fr / ~ lecroq / string / node14.html - выглядит хорошо, но эта реализация дала мне неправильные результаты - иногда она не находит строку.
Я потратил пару часов, чтобы найти ошибку.
Следующая строка выглядит хорошо:
j += MAX(bmGs[i], bmBc[y[i + j]] - m + 1 + i);
но y - это символ *, а символ подписан !Это означает, что y [i + j] может быть отрицательным (что происходит в одном из моих тестов).
Мой вопрос: где найти правильную реализацию алгоритма Бойера Мура?