Реферат: Алгоритмы поиска в тексте
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
Бесплатно скачать Реферат: Алгоритмы поиска в тексте
|