码迷,mamicode.com
首页 > 编程语言 > 详细

kmp算法基础

时间:2020-02-03 12:03:13      阅读:114      评论:0      收藏:0      [点我收藏+]

标签:class   mp算法   tps   cout   include   space   ons   using   char   

https://www.luogu.com.cn/problemnew/solution/P3375

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 const int maxn=1e6+10;
 4 int kmp[maxn];
 5 char a[maxn],b[maxn];
 6 int main()
 7 {
 8     scanf("%s%s",a+1,b+1);
 9     int lena=strlen(a+1);
10     int lenb=strlen(b+1);
11     int index=0;
12     for(int i=2;i<=lenb;i++){
13         while(index&&b[i]!=b[index+1])
14             index=kmp[index];
15         if(b[index+1]==b[i]) index++;
16         kmp[i]=index;
17     }
18     index=0;
19     for(int i=1;i<=lena;i++){
20         while(index>0&&b[index+1]!=a[i])
21             index=kmp[index];
22         if(b[index+1]==a[i])
23            index++;
24         if(index==lenb) {cout<<i-lenb+1<<endl;index=kmp[index];}
25     }
26     for(int i=1;i<=lenb;i++)
27         printf("%d ",kmp[i]);
28     printf("\n");
29 }

 

kmp算法基础

标签:class   mp算法   tps   cout   include   space   ons   using   char   

原文地址:https://www.cnblogs.com/pangbi/p/12254801.html

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