H2430819100


私信TA

用户名:dotcpp0794292

访问量:386

签 名:

等  级
排  名 1631
经  验 2727
参赛次数 0
文章发表 42
年  龄 0
在职情况 学生
学  校 贺州学院
专  业 软件工程

  自我简介:

TA的其他文章

解题思路:

注意事项:

参考代码:

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

  评论区

  • «
  • »