KMP算法-next数组的含义和求法

来源:互联网 发布:mac系统免费办公软件 编辑:程序博客网 时间:2024/06/09 12:42

KMP 为字符串的匹配算法,主要定义了一个next数组来实现匹配的跳转
本文章主要讲讲next数组的含义以及求法

next[i]表示以当前第i个字符为结尾的匹配长度
如:
0 1 2 3 4 5 6 7 8 9
a b a b c a b a b
0 0 1 2 0 1 2 3 4 next[i]

void makenext(){    int i=0;    int j=-1;    next[0]=-1;    int len=s.length();    while(i<len)    {        if(j==-1||s[i]==s[j])        {            i++;            j++;            next[i]=j;        }        else            j=next[j];    }}

next数组可以用来求重复子串的长度

0 0
原创粉丝点击