#include <stdio.h>
#include <string.h>
#include <assert.h>
// 找出两个字符串中最长的公共子串(如果存在多个 , 返回第一个)
// 参数:str1 字符串1
// str2 字符串2
// maxSubStr 找到的最大子串
void findMaxSubstr(const char *str1 , const char *str2 , char *maxSubstr){
assert((str1!=NULL)&&(str2!=NULL));
assert(maxSubstr!=NULL);
int maxPos=-1;
int maxLen=0; //相同字符串的最大长度
// 穷举
for(unsigned int i=0; i<strlen(str1); i++)
{
for(unsigned int j=0; j<strlen(str2); j++)
{
if(str1[i] == str2[j]) //发现相同的字母
{
// 继续比较后面的是否也相同
for(int k=1; (str1[i+k]==str2[j+k])&&(str1[i+k]!='\0'); k++)
;
if(k>maxLen) // 是否为目前最长字符串
{
maxPos=i; // 起始位置
maxLen=k; // 长度
}
}
}
}
if(maxPos==-1)
{
maxSubstr[0]='\0';
}
else
{
memcpy(maxSubstr , str1+maxPos , maxLen);
maxSubstr[maxLen]='\0';
}
}
int main()
{
char substr[20];
findMaxSubstr("dddabd123456abcdefeeeee" , "234dddabcdegeeee" , substr);
printf("%s\n",su |