| KMP算法的思想就是:在匹配过程称,若发生不匹配的情况,如果next[j]>=0,则目标串的指针i不变,将模式串的指针j移动到next[j]的位置继续进行匹配;若next[j]=-1,则将i右移1位,并将j置0,继续进行比较。 
 代码实现如下:
 
 
 int KMPMatch(char *s,char *p)
 {
 int next[100];
 int i,j;
 i=0;
 j=0;
 getNext(p,next);
 while(i<strlen(s))
 {
 if(j==-1||s[i]==p[j])
 {
 i++;
 j++;
 }
 else
 {
 j=next[j];       //消除了指针i的回溯
 }
 if(j==strlen(p))
 return i-strlen(p);
 }
 return -1;
 }
 |