Образовательный портал Claw.ru
Всё для учебы, работы и отдыха
» Шпаргалки, рефераты, курсовые
» Сочинения и изложения
» Конспекты и лекции
» Энциклопедии

Служебная функция FindRightmost возвращает самое последнее вхождение образца P среди n первых символов строки S. Формат вызова функции BMSearch отличается от предыдущего. В параметре lp передается длина строки образца, сама же строка не нужна, так как таблица смещений однозначно описывает образец. Следует также учесть, что функция MakeBMTable динамически выделяет память для таблицы смещений, и после окончания использования функции BMSearch эту память необходимо освободить при помощи функции FreeMem. Следующий фрагмент кода иллюстрирует поиск всех вхождений образца P в строке S.

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;


Рекомендуем скачать другие рефераты по теме: шпоры по праву, реферат по физкультуре.


Категории:




Предыдущая страница реферата | 1  2  3  4  5  6  7  8  9  10 |


Поделитесь этой записью или добавьте в закладки

   



Рефераты от А до Я


Полезные заметки

  •