解题思路:

注意事项:

参考代码:

#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分

0 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论