KMP模板

来源:互联网 发布:python做网站的服务器 编辑:程序博客网 时间:2024/06/06 18:05
#include<stdio.h>  #include<string.h>  //c1==匹配串 c2==目标串(一般较长)  char c1[1111],c2[2222];  int next[1111];  void nextt(){    int i = 0,j = -1;      next[0] = -1;     while(c1[i])      {          if(j == -1 || c1[i] == c1[j])          {              i++;              j++;              next[i] = j;          }          else              j = next[j];      } }int kmp(){nextt();int len1=strlen(c1);int len2=strlen(c2);int i=0,j=0;while(i<len2&&j<len1){if(j==-1||c2[i]==c1[j]){i++;j++;if(i==len2){//可重叠    j=next[j]//不可重叠  j=0return j;//返回第一个符合的位置 }} else j=next[j];} return 0;}int main(){scanf("%s",c1);nextt();}

0 0
原创粉丝点击