题解 | #查找两个字符串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); } }