题解 | #公共子串计算#
公共子串计算
https://www.nowcoder.com/practice/98dc82c094e043ccb7e0570e5342dd1b
//逐一遍历,可以用更好的查找算法降低时间长复杂度
#include <stdio.h>
#include<string.h>
int main()
{
int i = 0, j = 0, max = 0, count = 0, cur = 0,tmp=0;
char arr1[150], arr2[150];
gets(arr1);
gets(arr2);
int sz1 = strlen(arr1), sz2 = strlen(arr2);
for (i = 0; i < sz1; i++)
{
cur = i;
count = 0;
for (j = 0; j < sz2; j++)
{
tmp = j;
count=0;
while (arr1[i] == arr2[j] && i < sz1 && j < sz2)
{
count++;
j++;
i++;
}
max = max > count ? max : count;
if (i > cur)
{
i = cur;
j = tmp;
}
}
}
printf("%d\n", max);
return 0;
}
