Java教程

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();
            
        }
    }
}

 

这篇关于KMP算法板子的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!