关闭

【KMP 模板】

361人阅读 评论(0) 收藏 举报
分类:

----------------------------

一 模板

----------------------------

const int maxn=1111111
char s[maxn];
char p[maxn];
int next[maxn];
void getnext(char *p,int *next){
    int i=0,j=-1;
    int len=strlen(p);
    next[0]=-1;
    while(i<len){
        if(j==-1 || p[i]==p[j]){
            i++;
            j++;
            next[i]=j;
        }
        else
            j=next[j];
    }
}
void kmp(char *s,char *p,int *next){
    int i=0,j=0;
    int n=strlen(s);
    int m=strlen(p);
    getnext(p,next);
    while(i<n){
        if(j==-1 || s[i]==p[j]){
            i++;
            j++;
        }
        else
            j=next[j];
        if(j==m){
            //To DO
            // ans++;
            j=next[j];
        }
    }
}




0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:106170次
    • 积分:2964
    • 等级:
    • 排名:第11850名
    • 原创:198篇
    • 转载:15篇
    • 译文:0篇
    • 评论:6条