求教,关于字符串某题目,哪里错了,貌似时间复杂度上面有问题
题目,以EOF做结束符,输出两个字符串a,b,求a的前缀和b的后最最长的匹配。Sample Input
clinton
homer
riemann
marjorie
Sample Output
0
rie 3
我的代码
#include"stdio.h"
#include"string.h"
char a[50001],b[50001];
int c[50001];
int main()
{ unsigned int i=0,j,n,t,flag=0,alen,blen;
while(getchar()!=EOF)
{
gets(a);
gets(b);
alen=strlen(a);
blen=strlen(b);
for(j=blen-1;j>=0;j--)
{
if(b[j]==a[0]) c[j]=1;
else c[j]=0;/*标记c数组*/
}
for(t=0;t<blen-1;t++)
{if(c[t]==1)
{ j=t;
while( b[j]==a[0])
{ j++;
i++;
if(j==blen) {flag=1; break;}/*flag=1表示存在这样的前最和后缀匹配*/
if(i==alen) {break; }
}
}
}
if(flag==0) printf("%d",flag);
else
{for(t=0;t<i-1;t++)
{printf("%c",a[t]);}
printf(" %d",i+1);
printf("\n");
}
}
return 0;
}