KMP模式匹配

来源:互联网 发布:php xpath 抓取内容 编辑:程序博客网 时间:2024/05/22 05:17

1、求next值

void getnext(char *t,int *next){int i=1,j=0;next[1]=0;while(1){        if(t[i-1]=='\0')break;        if(j==0||t[i-1]==t[j-1]){        i++;j++;        next[i]=j;    }    else        j=next[j];}}

2、求s2在s1中位置及匹配次数

void substring(char *s1, char *s2){    int i=1,j=1,n,m,c=0,next[100];    getnext(s2,next);    m=strlen(s1);    n=strlen(s2);    while(i<=m&&j<=n)    {        if(j==0||s1[i-1]==s2[j-1])        {            i++;            j++;        }        else            j=next[j],c++;    }    if(j>n){        printf("%d %d",c+1,i-n);    }    else        printf("0");}


0 0