题解 | #查找两个字符串a,b中的最长公共子串#

查找两个字符串a,b中的最长公共子串

https://www.nowcoder.com/practice/181a1a71c7574266ad07f9739f791506

//两层循环,从前往后遍历,字符串存的始终是最长且最靠前的子串
#include <stdio.h>
#include<string.h>
int main()
{
    char arr1[300], arr2[300], p[300];
    gets(arr1);
    gets(arr2);
    int i = 0, j = 0, q = 0, count = 0, max = 0, a = 0, b = 0, flag = 0, sz1 = strlen(arr1), sz2 = strlen(arr2);
    for (i = 0; i < sz1; i++)
    {
        for (j = 0; j < sz2; j++)
        {
            count = 0;
            a = i;
            b = j;
            if (arr1[a] == arr2[b])
            {
                while (arr1[a] == arr2[b])
                {
                    count++;
                    a++;
                    b++;
                }
                if (count == max)
                {
                    if (sz2<sz1&&j<flag)//这里可以简化掉,在程序开始时,利用strcpy将短的放入指定地址
                    {
                        flag = j;
                        a=i;
                        for (q = 0; q < max; q++)
                        {
                            p[q] = arr1[a];
                            a++;
                        }
                    }
                }
                if (count > max)
                {
                    flag = j;
                    max = count;
                    a=i;
                    for (q = 0; q < max; q++)
                    {
                        p[q] = arr1[a];
                        a++;
                    }
                }
            }
        }
    }
    for (q = 0; q < max; q++)
    {
        printf("%c", p[q]);
    }
    return 0;
}

全部评论

相关推荐

陆续:不可思议 竟然没那就话 那就我来吧 :你是我在牛客见到的最美的女孩
点赞 评论 收藏
分享
程序员小白条:找的太晚,别人都是大三实习,然后大四秋招春招的,你大四下了才去实习,晚1年
点赞 评论 收藏
分享
07-24 12:30
湘潭大学 营销
点赞 评论 收藏
分享
评论
1
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务