KMP算法总结——待更新

KMP算法主要解决字符串匹配问题,其中失配数组next很关键;

void get_next(char *s)
{
    next[0] = -1;                 /*next[0]初始化为-1,-1表示不存在相同的最大前缀和最大后缀*/
    int k = -1;                   /*k初始化为-1*/
    for (int i=1; i<=len-1; i++)
    {
        while (k>-1 && s[k+1] != s[i])
                                  /*如果下一个不同,那么k就变成next[k],
                                           注意next[k]是小于k的,无论k取任何值。*/
        {
            k = next[k];          /*往前回溯*/
        }
        if (s[k+1] == s[i])       /*如果相同,k++*/
        {
            k = k + 1;
        }
        next[i] = k;              /*这个是把算的k的值
                                        (就是相同的最大前缀和最大后缀长)赋给next[i]*/
    }
}

excuse me???

猜你喜欢

转载自blog.csdn.net/winner647520/article/details/81128719