求教,字符串最长的前后缀匹配
题目,输入两个字符串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,alen,blen;
while(gets(a)!=NULL)
{
gets(b);
flag=0;
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;
}/*b数组中存在一个和a[0]相等的,标志数组置为1,否则初始为零*/
for(t=0;t<=blen-1;t++)
{if(c[t]==1)/*当c【】为1的时候,说明b中有个字符和a【0】相等*/
{ j=t;i=0;/*b[]从c记录的下标开始和a【1,2,3,4.。。】相比较,*/
while( b[j]==a[i])
{ j++;
i++;
if(j>blen-1) {flag=1; break;}/*b【】数组比较完毕,找到,标志位置为1*/
else if(i>alen-1) { break;}
}
}
}
if(flag==0) printf("%d\n",flag);
if(flag==1)
{
for(i=t;t<blen;t++)
{printf("%c",b[t]);}
printf(" %d\n",i+1);
}
}
return 0;
}