KMP算法(模板)

//S是要被匹配的串,s是用來匹配的串
//求出S串中有多少s
//getnext()
int cnt=0;
next[0]=-1;
for(int i=0;s[i];i++)
{
    int k=next[i];
    while(k>=0&&s[i]!=s[k]) k=next[k];
    next[i+1]=k+1;
}
for(int i=0,j=0;S[i])
{
    if(S[i]==s[j]||j<0)
    {
        i++;j++;
        if(!s[j]) cnt++;
    }
    else j=next[j];
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章