Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Function Pos ( const Needle, HayStack : string ) : Integer;
- var
- F: array of Integer;
- k, i: integer;
- begin
- SetLength(F, 1+Length(Needle)); // Строки индексируются с 1, динамические массивы - с 0.
- F[1] := 0;
- k := 0;
- for i := 2 to Length(Needle) do
- begin
- while (k > 0) and (Needle[k+1] <> Needle[i]) do
- k := F[k];
- if Needle[k+1] = Needle[i] then
- Inc(k);
- F[i] := k;
- end;
- k := 0;
- for i := 1 to Length(HayStack) do
- begin
- while (k > 0) and (Needle[k+1] <> HayStack[i]) do
- k := F[k];
- if Needle[k+1] = HayStack[i] Then
- Inc(k);
- if k = Length(Needle) Then
- begin
- Result := i-length(Needle)+1;
- //Здесь обрабатываются полученные данные после того как мы нашли подстроку,
- //можно сделать результатом работы функции не только положение подстроки хотя это и есть основная задача этой функции
- Break;
- end;
- end;
- end;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement