【字符串】【kmp模板】

来源:互联网 发布:手机测评软件 编辑:程序博客网 时间:2024/06/09 02:17

s1为匹配串,s2为模式串。kmp算法中的next数组称为失配指针,表示s1[i]和s2[j]匹配失败时,最有效率的方法是让s1[i]和s2[j]中的哪个元素进行匹配。
next数组有很多种定义方式,自己选了一种作为模板。

void get_next(){    int j,k;    j = 0;    next[0] = k = -1;    while(j < l2)    {        if(k==-1||s2[j]==s2[k])            next[++j] = ++k;        else            k = next[k];    }    return;}void kmp(){    int i,j,k;    i = j = 0;    while(i < l1)    {        if(j == -1||s1[i]==s2[j])        {            i++;            j++;        }        else            j = next[j];    }    return;}
原创粉丝点击