Реферат: Алгоритмы поиска в тексте
Suffix[1] := Char(j);
Move(P[i + 1], Suffix[2], lp - i );
SufPos := FindRightmost(P, Suffix, lp - 1);
if SufPos <> 0 then CurShift := i - SufPos;
BMT^[i-1][j] := CurShift;
end;
BMT^[i-1][Byte(P[i])] := 0;
end;
end;
function BMSearch( StartPos, lp : Integer; const S : String;
BMT : PBMTable) : Integer;
var
Pos, i : Integer;
begin
Pos := StartPos + lp -1;
while Pos < Length(S) do
for i := lp downto 1 do
if BMT^[i-1][Byte(S[Pos-lp+i])] <> 0 then
begin
Pos := Pos + BMT^[i-1][Byte(S[Pos-lp+i])];
Break;
end
else if i = 1 then
begin
Result := Pos - lp + 1;
Exit;
end;
Result := 0;
end;