Алгоритм поиска подстроки в строкеDelphi , Синтаксис , Текст и СтрокиАлгоритм поиска подстроки в строке
Автор: ALex2 { **** UBPFD *********** by delphibase.endimus.com **** >> алгоритм поиска подстроки в строке Зависимости: SysUtils Автор: ALex2) Copyright: 2) Дата: 1 февраля 2003 г. ***************************************************** } function BMSearch(StartPos: Integer; const S, P: string): Integer; type TBMTable = array[0..255] of Integer; var Pos, lp, i: Integer; BMT: TBMTable; begin for i := 0 to 255 do BMT[i] := Length(P); for i := Length(P) downto 1 do if BMT[Byte(P[i])] = Length(P) then BMT[Byte(P[i])] := Length(P) - i; lp := Length(P); Pos := StartPos + lp - 1; while Pos <= Length(S) do if P[lp] <> S[Pos] then Pos := Pos + BMT[Byte(S[Pos])] else if lp = 1 then begin Result := Pos; Exit; end else for i := lp - 1 downto 1 do if P[i] <> S[Pos - lp + i] then begin Inc(Pos); Break; end else if i = 1 then begin Result := Pos - lp + 1; Exit; end; Result := 0; end; { алгоритм Бойера-Мура ф-ия возвращает первое вхождение подстроки в строку работает быстро } Пример использования: BMSearch(1, 'dsade', 'de') // в данном примере ф-ия возвратит число 4 // 1 - это позиция с которой ищем подстроку в строке Это реализация алгоритма Бойера-Мура в Delphi для поиска подстроки в строке. Алгоритм был впервые описан Робертом С. Бойером и Джеймсом С. Муром в 1977 году. Алгоритм Бойера-Мура - это эффективный алгоритм поиска строки, который использует два таблицы: одну для хранения информации о паттерне, который ищется, и другую для хранения информации о тексте, который ищется. Вот шаг за шагом, как работает код:
Пример использования:
Это будет искать подстроку Алгоритм Бойера-Мура имеет сложность времени O(n + m), где Алгоритм поиска подстроки в строке, представленный в статье, использует алгоритм Бойера-Мура для быстрого нахождения первого вхождения подстроки в строку. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта. :: Главная :: Текст и Строки ::
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |