int find(char* str,char* sub){//看sub子串在str中是否存在
int i=0,mem=0,j=0;
while (str[i]!='\0'){
if (str[i]!=sub[0]){
i++;
}
else{
mem=i;
while (sub[j]!='\0'){
if (str[i]==sub[j])
{
i++;
j++;
} else{
i=mem+1;
j=0;
break;
}
}
if (sub[j]=='\0')
return 1;
}
}
return 0;
}
char* findMaxsub(char* str1,char* str2){
char *longerStr,*shoterStr;
char* sub;
if (str1==NULL||str2==NULL)
return 0;
int len1=strlen(str1);
int len2=strlen(str2);
if (len1<len2){
longerStr=str2;
shoterStr=str1;
}
else{
longerStr=str1;
shoterStr=str2;
}
int i;
int j;
if (find(longerStr,shoterStr))
return shoterStr;
sub = new char[strlen(shoterStr)];
for (i = strlen(shoterStr)-1; i>0 ; i--) {//外层循环控制子串的长度
for (j = 0; j <= strlen(shoterStr)-i; ++j) {//内层获得长度为i的子串
memcpy(sub,shoterStr+j,i);
sub[i]='\0';
if (find(longerStr,sub))
return sub;
}
}
delete(sub);
return NULL;
}
查找两个字符串中的最大公共子串
最新推荐文章于 2022-04-20 09:58:33 发布