解题思路:
注意事项:
参考代码:
#include<stdio.h>
#include<string.h>
int main()
{
int len_a,len_b,len,i,j,n,sum=0;
char a[256]={0},b[256]={0},c[512]={0},d[512]={0};
scanf("%s %s",a,b);
strcpy(c,a); //将a拷贝给c
strcpy(d,b); //将b拷贝给d
strcat(c,a); //将a接在c后面,形成一个环
strcat(d,b); //将b接在d后面,形成一个环
len_a=strlen(a);
len_b=strlen(b);
len=len_a>len_b?len_b:len_a;
for(i=0;i<len_a;i++)
{
for(j=0;j<len_b;j++)
{
n=0; //记录当前子串长度
//这题n==len时就不需要这两个环比较了,有的题目需要n<2*len,依题目而定
while(c[i+n]==d[j+n]&&n<len) //找到两个相同字母,n++,此时循环条件也会自动转换成后面一个字母的判断,很妙
{
n++;
}
//一轮比较结束后
sum=sum>n?sum:n; //如果比sum大,则此时的n暂为最大长度,赋值给sum
}
}
printf("%d",sum);
return 0;
}
0.0分
0 人评分