C语言程序:求两个字符串中的公共字符串个数及最大公共字符串9
发布网友
发布时间:2023-11-02 13:14
我来回答
共2个回答
热心网友
时间:2024-11-23 11:54
#include
#include
char
*maxcommonstr(char
*a,char
*b);
int
main()
{
char
s[]
=
"abcabcdefabc";
char
*d
=
"adcdef";
char
*common=null;
common
=
maxcommonstr(s,d);
puts(common);
return
0;
}
char
*maxcommonstr(char
*a,char
*b)
{
static
char
d[255]
=
{0};//存储最大公共字串
char
temp[255]={0};//临时存储公共字串
char
*p
=
null,*q
=
null,*r
=
null,*s
=null;
while(*a)//从第一个字符开始遍历a串
{
p
=
a;//p指向a串
q
=
b;//q指向b串
r
=
temp;
for(s
=
q;s
<=
b
+strlen(b);
s
++)//从第一个字符开始遍历b串
{
q
=
s;
while(
*p
&&
*q
&&
*p
==
*q
)//
若相等则赋值后移指针
{
*r
=
*p;
p
++;
q
++;
r
++;
}
}
*r
=
'\0';//末尾手动补0
if(strlen(temp)
>
strlen(d))
//如果此趟字串比以记录最大字串长
则改变最大字串存储
strcpy(d,temp);
a++;//
a串后移
}
return
d;
}
仅供参考……
热心网友
时间:2024-11-23 11:54
可以用hash表来算,时间复杂度也会比较低。