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

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

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

#include <stdio.h>
#include <string.h>

int main() {
    char a[300], b[300];
    scanf("%s\n%s", a, b);
    int lena = strlen(a);
    int lenb = strlen(b);
    int max = 0;
    char an[300];
    if (lena < lenb) {
        for (int i = 0; i < lena; i++) {
            for (int j = 0; j < lenb; j++) {
                int n = 0;
                while (a[i+n] == b[j+n] && a[i+n]!='\0') {
                    n++;
                }
                if (n > max) {
                    max = n;
                    strcpy(an, a + i);
                    an[max] = '\0';
                }
            }
        }
    }

    if (lena > lenb) {
        for (int i = 0; i < lenb; i++) {
            for (int j = 0; j < lena; j++) {
                int n = 0;
                while (a[j+n] == b[i+n] && b[i+n] !='\0') {
                    n++;
                }
                if (n > max) {
                    max = n;
                    strcpy(an, b + i);
                    an[max] = '\0';
                }
            }
        }
    }
     printf("%s\n",an); 
    return 0;
}

全部评论

相关推荐

迷茫的大四🐶:自信一点,我认为你可以拿到50k,低于50k完全配不上你的能力,兄弟,不要被他们骗了,你可以的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务