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

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

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

#include<stdio.h>
#include<string.h>
int main()
{
    char str1[1000],str2[1000],ans[1000];
    int i,j,n,max;
    while(scanf("%s %s",str1,str2)!=EOF)
    {
        if(strlen(str1)>strlen(str2))//选择较短子串为str1
        {
            char temp[1000];
            strcpy(temp,str1);
            strcpy(str1,str2);
            strcpy(str2,temp);
        }
        max=0;
        for(int i=0;i<strlen(str1);i++){
            for(int j=0;j<strlen(str2);j++){
                n=0;
                while(str1[i+n]==str2[j+n]&&str1[i+n]!='\0'){
                    n++;
                }
                if(n>max){
                    max=n;
                    strcpy(ans,str1+i);
                    ans[n]='\0';
                }
            }

        }
        printf("%s\n",ans);
    }
        
}

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务