剑无情 人却有情

js.js

自主问题--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\n",i-m+2); j=p[j]; }

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

posted @ 2019-11-23 21:59  mzyczly  阅读(132)  评论(0编辑  收藏  举报