码迷,mamicode.com
首页 > 其他好文 > 详细

扩展kmp

时间:2020-01-23 15:35:06      阅读:104      评论:0      收藏:0      [点我收藏+]

标签:详细   min   har   扩展kmp   int   wiki   void   style   div   

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

标签:详细   min   har   扩展kmp   int   wiki   void   style   div   

原文地址:https://www.cnblogs.com/jionkitten/p/12230631.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!