char str1[1010];
char str2[1010];
int Next[1010];
void next_arr()
{
int len = strlen(str2);
Next[0] = -1;
int k = -1;
int j = 0;
while (j < len - 1)
{
if (k == -1 || str2[j] == str2[k])
{
++k;
++j;
Next[j] = k;
}
else
k = Next[k];
}
}
int kmp_match()
{
next_arr();
int i=0,j=0;
int len1=strlen(str1);
int len2=strlen(str2);
while(i<len1&&j<len2){
if(j==-1||str1[i]==str2[j]){
i++;
j++;
}
else
j=Next[j];
}
if(j == len2)
return i - j;
return -1;
}
【字符串】KMP匹配模板
猜你喜欢
转载自blog.csdn.net/explormt/article/details/81411330
今日推荐
周排行