关于如何求两个字符串的最大公共子串的问题

【关于如何求两个字符串的最大公共子串的问题】这是一个求字符串的最大公共子串的模板,此方法对于长度较短的字符串效率较高:

#include #include int f(char s1[],char s2[]) { int a[100][100]; int len1 = strlen(s1); int len2 = strlen(s2); int i,j; memset(a,0,sizeof(int)*100*100); int max = 0; for(i=1; i<=len1; i++){ for(j=1; j<=len2; j++){ if(s1[i-1]==s2[j-1]) { a[i][j] = a[i-1][j-1]+1; if(a[i][j] > max) max = a[i][j]; } } } return max; }int main() { char a[100],b[100]; scanf("%s%s",a,b); printf("%d\n", f(a,b)); return 0; }

    推荐阅读