方法一:暴力破解,不断回溯字符串s2进行循环比较。
#include<stdio.h>
#include<string.h>
#define MAX(a,b) (a>b?a:b)
int get_len(int s1_start, int s2_start);
char s1[150] = {0};
char s2[150] = {0};
int main() {
int max_len, count;
while (scanf("%s %s", s1, s2) != EOF) {
max_len = 0;
for (int i = 0; i < strlen(s1); i++) {
for (int j = 0; j < strlen(s2); j++) {
if(s1[i] != s2[j])
continue;
max_len = MAX(get_len(i,j), max_len);
}
}
printf("%d\n",max_len);
}
return 0;
}
int get_len(int s1_start, int s2_start){
int count = 0;
char chs1,chs2;
do{
chs1 = *(s1 + s1_start + count);
chs2 = *(s2 + s2_start + count);
if(chs1 == '\0' || chs2 == '\0'
|| chs1 != chs2){
break;
}
count++;
}while(1);
return count;
}