Boyer — Поиск строки Мура в поиске строки воскресенья (быстрый поиск строки) Переполнение стека

Я хочу превратить свой алгоритм Бойера — Мура в воскресенье (Быстрый поиск). В настоящее время у меня есть рабочая версия алгоритма поиска строки Бойера — Мура:

vector <int> table(256);
fill(table.begin(), table.end(), -1);

for (int i = 0; i < target_size; i++) {
table[(int)target[i]] = i;
}

int s = 0;
while (s <= (text_size - target_size)) {
int j = target_size - 1;
while (j >= 0 && target[j] == text[s + j])
j--;

if (j < 0) {
cout << s << endl;
s += (s + target_size < text_size) ? text_size- table[text[s + target_size]] : 1;
}
else
s += max(1, j - table[text[s + target_size]]);
}

Я просматривал следующие 2 ссылки, которые объясняют алгоритм Sunday (Quick search), но я не совсем уверен, как сменить B-M на Sunday:

http://www.iti.fh-flensburg.de/lang/algorithmen/pattern/sundayen.htm

http://www-igm.univ-mlv.fr/~lecroq/string/node19.html

Буду признателен за любые советы.

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector