题解 | #公共子串计算#
公共子串计算
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; }