码迷,mamicode.com
首页 > 其他好文 > 详细

KMP字符串匹配模板代码

时间:2018-02-22 21:27:36      阅读:171      评论:0      收藏:0      [点我收藏+]

标签:event   pen   scan   names   图片   stream   soft   16px   char   

  洛谷的模板传送门

  

技术分享图片
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<cmath>
#include<iostream>
#include<algorithm>
using namespace std;
const int N=2000200;
int lena,lenb,next[N];
char a[N],b[N];
int main()
{
  scanf("%s%s",a,b);
  lena=strlen(a);
  lenb=strlen(b);
  next[0]=next[1]=0;
  int k=0;
  for(int i=1;i<lenb;i++){
    while(k&&b[i]!=b[k])
      k=next[k];
    next[i+1]=b[i]==b[k]?++k:0;
  }
  k=0;
  for(int i=0;i<lena;i++){
    while(k&&a[i]!=b[k])
      k=next[k];
    k+=a[i]==b[k]?1:0;
    if(k==lenb)
      printf("%d\n",i-lenb+2);
  }
  for(int i=1;i<=lenb;i++)
    printf("%d ",next[i]);
  return 0;
}
View Code

 

KMP字符串匹配模板代码

标签:event   pen   scan   names   图片   stream   soft   16px   char   

原文地址:https://www.cnblogs.com/cytus/p/8459852.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!