#include "stdio.h"
#include "malloc.h"
#include "string.h"
char *maxsubstr(char *str1, char *str2)
{
char *p1, *p2, *q1, *q2, *destp;
char *substr;
int max = 0, len;
p1 = str1;
while(*p1 != '\0')
{
q1 = str2;
while(*q1 != '\0')
{
len = 0;
p2 = p1;
q2 = q1;
while((*p2 != '\0')&&(*q2 != '\0'))
{
if(*p2 == *q2)
{
p2 ++;
q2 ++;
len ++;
}
else
{
break;
}
}
if(len > max)
{
max = len;
destp =p1;
}
q1++;
}
p1++;
}
substr=(char*)malloc(sizeof(char)*max);
strncpy(substr,destp,max);
substr[max] = '\0';
return substr;
}
int main() //测试例子
{
char *s1="aocdfeb";
char *s2="pmcdfae";
char *sub;
printf("%s\n%s\n",s1,s2);
sub = maxsubstr(s1,s2);
printf("the max sub string is:%s\n",sub);
return 0;
}
两个字符串的最长公共子串
最新推荐文章于 2020-02-01 18:17:37 发布