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