程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> kmp模式匹配算法的pascal實現

kmp模式匹配算法的pascal實現

編輯:Delphi

  {
    Implementation of KMP Algorithm
  }
  PROGRAM Impl_KMP;

  USES
      CRT;

  CONST
       MAX_STRLEN = 255;

  VAR
     next         : array [ 1 .. MAX_STRLEN ] of integer;
     str_s, str_t : string;
     int_i        : integer;

  Procedure get_nexst( t : string );
  Var
     j, k : integer;
  Begin
       j := 1; k := 0;
       while j < Length(t) do
       begin
            if ( k = 0 ) or ( t[j] = t[k] ) then
            begin
                 j := j + 1; k := k + 1;
                 next[j] := k;
            end
            else k := next[k];
       end;
  End;

  Function index( s : string; t : string ) : integer;
  Var
     i, j : integer;
  Begin
       get_next(t);
       index := 0;
       i := 1; j := 1;
       while ( i <= Length(s) ) and ( j <= Length(t) ) do
       begin
            if ( j = 0 ) or ( s[i] = t[j] ) then
            begin
                 i := i + 1; j := j + 1;
            end
            else j := next[j];
            if j > Length(t) then index := i - Length(t);
       end;
  End;

  BEGIN
       ClrScr;
       Write('s = ');
       Readln(str_s);
       Write('t = ');
       Readln(str_t);
       int_i := index( str_s, str_t );
       if int_i <> 0 then
       begin
            Writeln( 'Found ', str_t, ' in ', str_s, ' at ', int_i, '.' );
       end
       else
           Writeln( 'Cannot find ', str_t, ' in ', str_s, '.' );
  END.

  index函數用於模式匹配,t是模式串,s是原串。返回模式串的位置,找不到則返回0

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved