编程语言
首页 > 编程语言> > KMP算法板子

KMP算法板子

作者:互联网

int next[100];
void getnext()
{
    string a//(查找的串)
    next[0]=-1;
    int j=0,k=-1;
    for(j=0;j<a.size();j++)
    {
        if(k==-1||a[j]==a[k])
        {
            next[++j]=++k;
        }
        else
        {
            k=next[k];
        }
    }
}

得到所用的next数组

int kmp(string s)//s 被查找的串
{
    int j=0;
    for(int i=0;i<s.size();i++)
    {
      j=0; while(i<s.size()&&j!=-1&&j<a.size()) { if(a[i]==a[j]) j++; else j=next[j]; if(j==a.size()) return i-a.size(); } } }

 

标签:getnext,string,int,while,next,算法,查找,KMP,板子
来源: https://www.cnblogs.com/donkey9/p/15218915.html