Алгоритм поиска подстроки в строке с помощью суффиксного массива
Версия от 05:06, 1 мая 2011; 192.168.0.2 (обсуждение)
Пусть у нас есть образец суффиксный массив . Мы хотим найти все вхождения данного образца в данную строку. Существует несколько методов решения данной задачи.
, строка иРешение при помощи бинарного поиска
Понятно, что если образец
Пусть
- длина строки . Тогда на первом шаге сравниваем суффикс и образец по первому символу. Если первый элемент суффикса лексикографически больше, то необходимо идти в левую половину , иначе в правую. На следующем шаге аналогично проверяем суффикс по середине от половины суффискного массива, затем от четверти и так далее. В результате проделанной работы получим левую и правую границы и соответственно, в которых необходимо вести поиск.