题解 | #公共子串计算#

公共子串计算

https://www.nowcoder.com/practice/98dc82c094e043ccb7e0570e5342dd1b

//逐一遍历,可以用更好的查找算法降低时间长复杂度
#include <stdio.h>
#include<string.h>
int main()
{
    int i = 0, j = 0, max = 0, count = 0, cur = 0,tmp=0;
    char arr1[150], arr2[150];
    gets(arr1);
    gets(arr2);
    int sz1 = strlen(arr1), sz2 = strlen(arr2);
    for (i = 0; i < sz1; i++)
    {
        cur = i;
        count = 0;
        for (j = 0; j < sz2; j++)
        {
            tmp = j;
            count=0;
            while (arr1[i] == arr2[j] && i < sz1 && j < sz2)
            {
                count++;
                j++;
                i++;
            }
            max = max > count ? max : count;
            if (i > cur)
            {
                i = cur;
                j = tmp;
            }
        }
    }
    printf("%d\n", max);
    return 0;
}

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-25 17:55
点赞 评论 收藏
分享
认真搞学习:这么良心的老板真少见
点赞 评论 收藏
分享
06-08 22:25
门头沟学院 Java
从零开始的转码生活:这hr不会打开手机不分青红皂白给所有人群发这句话,过一会再给所有人再发一遍,这肯定会有重复的,不管,再过一会再发一遍
点赞 评论 收藏
分享
评论
1
1
分享

创作者周榜

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