描述
给定两个只包含小写字母的字符串,计算两个字符串的最大公共子串的长度。
注:子串的定义指一个字符串删掉其部分前缀和后缀(也可以不删)后形成的字符串。
输入描述:
输入两个只包含小写字母的字符串
输出描述:
输出一个整数,代表最大公共子串的长度
示例1
输入:
asdfas
werasdfaswer
输出:
6
#include <stdio.h>
#include <string.h>
#if 0
#define dbg printf
#else
#define dbg
#endif
int main(void)
{
char a[128] = {0};
char b[128] = {0};
char tmp[128] = {0};
int i, j, k;
int len;
scanf("%s", a);
scanf("%s", b);
len = strlen(a);
for(; len>0; len--)
{
for(i=0; i<=strlen(a)-len; i++)
{
memset(tmp, 0, sizeof(tmp));
k = 0;
for(j=i; j<=len+i-1; j++)
{
tmp[k] = a[j];
k++;
}
dbg("(%d):%s\n", __LINE__, tmp);
if(strstr(b, tmp) != NULL)
{
printf("%d\n", len);
goto END;
}
}
}
END:
return 0;
}