int next[1005];
void getnext(char s[]){
int len = strlen(s);
int j = 0;
for(int i = 1;i<len;i++){
while(j>0&&s[i]!=s[j]) j = next[j];
if(s[i] == s[j]) j++;
next[i+1] = j;
}
}
int KMP(char s[],char t[]){
int len1 = strlen(s);
int len2 = strlen(t);
int j = 0;
for(int i = 0;i<len1;i++){
while(j>0&&s[i]!=t[j]) j = next[j];
if(s[i] == t[j]) j++;
if(j == len2) return i-j+1;
}
return -1;
}
KMP算法
最新推荐文章于 2023-04-09 17:43:52 发布