如何理解kmp的next数组?

这里t是要查找的子串,m是t串的长度。请问下kmp算法中next数组的含义是什么,以及下面这段代码的求法是否正确。

void getNext()
{
    nxt[0] = 0;
    int j = 0, i = 1;
    while (i < m)
    {
        if (t[j] == t[i])
        {
            nxt[i] = ++j;
            i++;
        }
        else if (j == 0)
        {
            nxt[i] = 0;
            i++;
        }
        else
        {
            j = nxt[j - 1];
        }
    }
}

阅读 519
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题