KMP模板

it2024-10-18  14

int b[MAXM]=zero;//根据需要改charint a[MAXN]=zero;int next[MAXM];void GetNext(int len)//得到b的next{    int i,j;    for(i=1,j=0;i<=len;)    {        if(j==0||b[i-1]==b[j-1]) {            next[i]=j;            j++;            i++;        }        else        {            j=next[j];        }    }}int kmp(int lena,int lenb){    int i,j;    for(i=0,j=0;i<lena;)    {        if(j==0||a[i]==b[j])        {            if(a[i]!=b[j])            {                j=0;                i++;                continue;            }            i++;            j++;            if(j==m)            {                return i-lenb+1;//返回起始匹配位置,从1开始            }        }        else        {            j=next[j];        }    }    return -1;}

转载于:https://www.cnblogs.com/Skyxj/p/3348867.html

相关资源:数据结构—成绩单生成器
最新回复(0)