![]() |
![]() ![]() ![]() ![]() |
|
Алгоритм поиска подстроки в строке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 прямо в свой смартфон. Подпишитесь на наш :: Главная :: Текст и Строки ::
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 | ||||