自主问题--KMP算法

我只是一个虾纸丫 提交于 2019-12-05 09:51:56

再预处理数组时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\n",i-m+2);
j=p[j]; 
}

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

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!