Реферат: Алгоритмы поиска в тексте

MakeBMTable(BMT, P);

PatPos := BMSearch(1, Length(P), S, BMT);

while PatPos <> 0 do

begin

...

PatPos := BMSearch(PatPos + 1, Length(P), S, BMT);

end;

FreeMem(BMT);

Дополнительным преимуществом данного варианта алгоритма является возможность организовать «регистронезависимый» поиск, т. е. поиск слова вне зависимости от регистра букв. Для этого достаточно в таблице смещений сопоставить одинаковые строки одним и тем же буквам разного регистра. Можно даже ввести поиск по шаблону, содержащему подстановочные символы. Ниже приводятся функции формирования таблицы смещений для шаблонов, в которых символ «?» соответствует любому символу используемого набора.

function WCBeginsWith( const P, S : String) : Boolean;

var

i, lp : Integer;

begin

Result := False;

lp := Length(P);

if lp > Length(S) then Exit;

for i := 1 to lp do

if (P[i]<>S[i]) and (P[i]<>'?') and (S[i]<>'?') then Exit;

Result := True;

end;

function WCFindRightmost( const S, P : String;

l : Integer) : Integer;

var

i, j, lp : Integer;

begin

Result := 0;

lp := Length(P);

if lp > l then Exit;

for i := l - lp + 1 downto 1 do

К-во Просмотров: 331
Бесплатно скачать Реферат: Алгоритмы поиска в тексте