Изменения

Перейти к: навигация, поиск

Алгоритм Бойера-Мура

65 байт добавлено, 00:59, 10 мая 2014
м
Псевдо-код
==Псевдо-код==
Функция для вычисления таблицы сдвигов плохих символов
void int[] '''preBmBc'''(string x, int m, ): int bmBc[ASIZE]):;
for i = 0 .. ASIZE-1
bmBc[i] = m;
for i = 0 .. m - 2
bmBc[x[i]] = m - i - 1; return bmBc;
Функция для вычисления таблицы суффиксов
void int[] '''suffixes'''(string x, int m, int *suff): int f, g, i; int suff[m];
suff[m - 1] = m;
int g = m - 1;
for i = m - 2 .. 0
if (i > g and suff[i + m - 1 - f] < i - g)
--g;
suff[i] = f - g;
return suff;
Функция для вычисления сдвигов хороших суффиксов
void '''preBmGs'''(string x, int m, int bmGs[]):
int i, j, suff[XSIZE];
int bmGs[] suff = suffixes(x, m, suff);
for (i = 0; i < m; ++i)
//Предварительные вычисления
bmGs = preBmGs(x, m, bmGs); bmBc = preBmBc(x, m, bmBc);
//Поиск подстроки
418
правок

Навигация