本帖最后由 董月峰 于 2014-4-9 11:42 编辑
这是我的基础测试最后一题。我给下我写的求2个最大公共字符串的函数吧
//比较2个字符串最大公共子串(串1,串2,串1长,串2长)
void maxstr(char *s1,char *s2,int num1,int num2)
{
//index表示字符相同时s1初始角标,n2表示公共子串初始长度是0,n1表示每个公共子串的长度
int index=0,n2=0,n1;
//遍历s1
for(int i = 0; i <= num1; i++)
{
//遍历s2
for(int j = 0; j <= num2; j++)
{
//若遇到相同字符
if(s1==s2[j])
{
//先赋值子串长度是1
n1 = 1;
//看从相同字符向后有多少字符还相同
for(int k = 1; s1[i+k]==s2[j+k]; k++)
//每多一个相同字符,n1自增1
{
n1++;
}
//取n2为最长的n1
if(n1 > n2)
{
//记录最长n2时候,s【i】的角标位置index
index = i;
n2 = n1;
}
//再与s1比较,从s2【n1+j】即可
j += n1;
}
}
}
//当存在子串时候,输出最大的
if(n2 !=0)
{
printf("最长的公共子串:");
for(int i = 0; i < n2; i++)
printf("%c",s1[index+i]);
}
//不存在子串输出没有
else
printf("没有公共子串!\n");
}
-----------分割线----------------
1.字符串长用strlen函数可求
2.求n个字符串串长可以根据以上函数用 递归 做
|