扩展kmp

Posted jionkitten

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了扩展kmp相关的知识,希望对你有一定的参考价值。

oiwiki上讲的挺详细的,但是感觉跟国内不太一样?代码好像也更简短?

void pre_ekmp(char s[], int ekmp[], int n)
{
    ekmp[0] = n; //国内是这样用的,oiwiki上好像是定义为0
    for (int i = 1, l = 0, r = 0; i < n; ++i)
    {
        if (i <= r) ekmp[i] = min(r - i + 1, ekmp[i - l]);
        while (i + ekmp[i] < n && s[ekmp[i]] == s[ekmp[i] + i]) ++ekmp[i];
        if (i + ekmp[i] - 1 > r) l = i, r = i + ekmp[i] - 1;
    }
}

以上是关于扩展kmp的主要内容,如果未能解决你的问题,请参考以下文章

KMP && Manacher && 扩展KMP整理

扩展kmp模板

扩展kmp

126B Password[扩展kmp学习]

扩展kmp

扩展kmp算法