题解 | #查找两个字符串a,b中的最长公共子串#
查找两个字符串a,b中的最长公共子串
https://www.nowcoder.com/practice/181a1a71c7574266ad07f9739f791506
#include <stdio.h>
#include<string.h>
int main() {
int i,j,max=0,count;
char str1[301],str2[301],str[301],ans[301],str_o[301];
scanf("%s",str1);
scanf("%s",str2);
//str1为较短字符串,较短的优先,故放在第一层循环
if(strlen(str1)>strlen(str2))
{
strcpy(str,str1);
strcpy(str1,str2);
strcpy(str2,str);
}
for(i=0;i<strlen(str1);i++)
{
for(j=0;j<strlen(str2);j++)
{
count=0;
for(int f1=i,f2=j;str1[f1]==str2[f2]&&f1<strlen(str1)&&f2<strlen(str2);f1++,f2++)
{
ans[count]=str2[f2];//自动覆盖了,故不需要置零
count++;
}
if(max<count)
{
max=count;
strcpy(str_o,ans);
}
}
}
printf("%s",str_o);
return 0;
}