题目链接:
题目大意:给定一串字符,从中找出符合“EAEBE”格式的E的最大字符数。AB可以是任意数量的任意字符(a-z)。
Sample Input
5
xy
abc
aaa
aaaaba
aaxoaaaaa
Sample Output
0
0
1
1
2
分析:首先枚举判断开始和结尾是否满足作为E,再KMP计算中间是否存在E
代码如下:
1 #include2 #include 3 #include 4 using namespace std; 5 #define N 1000001 6 int next[N]; 7 char a[N]; 8 9 void getnext(int m){10 int i=0,j=-1;11 next[0]=-1;12 while(i<=m){13 if(j==-1||a[i]==a[j])14 {15 i++;16 j++;17 next[i]=j;18 }19 else j=next[j];20 }21 }22 bool kmp(int st,int l){23 int j=0;24 int i=st+1;25 int ed=l-st-1;26 while(i =0;i--){50 if(judge(i,l)){51 if(kmp(i,l)) 52 {53 ans=i+1;54 break;55 }56 }57 }58 return ans;59 }60 int main(){61 int t;62 scanf("%d",&t);63 while(t--){64 scanf("%s",a);65 printf("%d\n",getsolve());66 }67 return 0;68 }