kmp模式匹配算法的pascal实现

原创 2001年08月17日 10:45:00

{
  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

哈夫曼编码和哈夫曼树的实现——Pascal实现

源代码: program Project1; type hu=RECORD data:char; weight:integer; code:string; end; fun=record weigh...
  • G1342522389
  • G1342522389
  • 2016年01月05日 21:34
  • 882

pascal指针

大家都认为,C语言之所以强大,以及其自由性,很大部分体现在其灵活的指针运用上。因此,说指针是C语言的灵魂,一点都不为过。同时,这种说法也让很多人产生误解,似乎只有C语言的指针才能算指针。Basic不支...
  • whd0310
  • whd0310
  • 2007年09月21日 13:28
  • 2133

用C语言写的Pascal语言词法分析器

虽然只是个词法分析器,但是重拾C语言好难!好久没用过C了。放在这儿勉励自己做事一定要有始有终/*Trans.c -main,Trans */#include #include #include #...
  • hammerwoo
  • hammerwoo
  • 2006年04月19日 14:40
  • 2006

[pascal]第三次pascal试验课上机时写的小程序

2007年3月30日 第三次pascal试验课 上机内容是循环结构程序设计以下是我课上写的几段代码,文件名就是课本上题目的位置,例如P14_1_2.PAS即为第14页的习题1.2。P87_4_4.PA...
  • sch0120
  • sch0120
  • 2007年04月08日 03:07
  • 1382

串的模式匹配算法——KMP

声明 原文链接:http://www.inf.fh-flensburg.de/lang/algorithmen/pattern/kmpen.htm ; 原文的“text”翻译为主串,通常用S表示,...
  • felicitia
  • felicitia
  • 2013年04月18日 17:57
  • 1483

KMP模式匹配算法实现

/** \brief  KMP模式匹配  *  * \param  * \param  * \return  *  */ #include #include /*...
  • u012655919
  • u012655919
  • 2014年06月24日 01:28
  • 378

KMP 模式匹配算法原理分析

1. KMP算法是一种线性时间复杂的字符串匹配算法,它是对BF算法(Brute-Force,最基本的字符串匹配算法的)改进。     对于给的的原始串S和模式串P,需要从字符串S中找到字符串P出现的...
  • clam_clam
  • clam_clam
  • 2011年09月22日 20:23
  • 4141

KMP模式匹配算法中next,nextval的分别实现

next数组定义: 对于这个定义,我的理解是从1~j-1中,前缀与后缀有n个相等,则next[j]=n+1。 例如:t="abcabaa" 当j=1时,next[1]=0。 当j=2时,从...
  • huanhuanxiaoxiao
  • huanhuanxiaoxiao
  • 2017年08月09日 11:37
  • 230

模式匹配KMP算法(Java)

/********查找匹配字符串**********/ //最原始、复杂度最高的做法 //返回childstr在mumstr中第pos个字符之后的位置,如果不存在,则返回0 public int Fi...
  • woliuyunyicai
  • woliuyunyicai
  • 2015年03月25日 15:47
  • 1031

图像分割的papers、github地址及pascal voc排名

语义分割领域最全的papers、github地址
  • zchang81
  • zchang81
  • 2017年09月29日 09:38
  • 440
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:kmp模式匹配算法的pascal实现
举报原因:
原因补充:

(最多只允许输入30个字)