自主问题--KMP算法

再预处理数组时p[i]表示的在模式串前i个字符中前缀和后缀最大公共长度

//例如下模式串
ababa p[
1]=0; p[2]=1; p[3]=2; p[4]=2; p[5]=3;

在kmp时,移动j要用while


输入 

char a[10],b[10]; cin>>a+1>>b+1;

KMP时判断字符是否相等要+1

while(j>0&&s1[i+1]!=s2[j+1]) j=p[j];
if(s1[i+1]==s2[j+1])
{
    j++;
}
if(j==m) { printf("%d ",i-m+2); j=p[j]; }

要预处理匹配串和模式串的长度。

原文地址:https://www.cnblogs.com/mzyczly/p/11920387.html