关于C语言的一道题:有两个字符串,str1 = "abcdefgggg",str2="aaagggg",要求找出其共同的
来源:学生作业帮 编辑:百度作业网作业帮 分类:综合作业 时间:2024/06/23 08:08:29
关于C语言的一道题:
有两个字符串,str1 = "abcdefgggg",str2="aaagggg",要求找出其共同的最长子串!
注意:是最长的共同子串!
函数接口:char *submaxstring(const char *str1,const char *str2)
有两个字符串,str1 = "abcdefgggg",str2="aaagggg",要求找出其共同的最长子串!
注意:是最长的共同子串!
函数接口:char *submaxstring(const char *str1,const char *str2)
![关于C语言的一道题:有两个字符串,str1 =](/uploads/image/z/5294773-37-3.jpg?t=%E5%85%B3%E4%BA%8EC%E8%AF%AD%E8%A8%80%E7%9A%84%E4%B8%80%E9%81%93%E9%A2%98%EF%BC%9A%E6%9C%89%E4%B8%A4%E4%B8%AA%E5%AD%97%E7%AC%A6%E4%B8%B2%2Cstr1+%3D+%22abcdefgggg%22%2Cstr2%3D%22aaagggg%22%2C%E8%A6%81%E6%B1%82%E6%89%BE%E5%87%BA%E5%85%B6%E5%85%B1%E5%90%8C%E7%9A%84)
两个for循环,再创建一个动态数组,就可以了:
#include<stdio.h>
#include<string.h>
#include<malloc.h>
char *submaxstring(const char *str1,const char *str2)
{
int size=(strlen(str1)>strlen(str2)?strlen(str1):strlen(str2));
char *max=(char *)malloc(sizeof(char)*size);
int i,j,k,m=1,length=1;
for(i=0;str1[i]!='\0';++i)
{
k=0;
for(j=0;str2[j]!='\0';++j)
{
while(str1[i+k]==str2[j+k])
{
k++;
m++;
}
if(m>length)
{
length=m;
strncpy(max,str1+i,k);
max[k]='\0';
}
k=0;
m=1;
}
}
return max;
}
void main()
{
char *str1="abcdefgggg",*str2="aaagggg";
char *max;
puts(str1);
puts(str2);
max=submaxstring(str1,str2);
printf("最长的共同子串:\n");
puts(max);
}
![](http://img.wesiedu.com/upload/7/d2/7d220903debbe886bf821f4e21c0101e.jpg)
#include<stdio.h>
#include<string.h>
#include<malloc.h>
char *submaxstring(const char *str1,const char *str2)
{
int size=(strlen(str1)>strlen(str2)?strlen(str1):strlen(str2));
char *max=(char *)malloc(sizeof(char)*size);
int i,j,k,m=1,length=1;
for(i=0;str1[i]!='\0';++i)
{
k=0;
for(j=0;str2[j]!='\0';++j)
{
while(str1[i+k]==str2[j+k])
{
k++;
m++;
}
if(m>length)
{
length=m;
strncpy(max,str1+i,k);
max[k]='\0';
}
k=0;
m=1;
}
}
return max;
}
void main()
{
char *str1="abcdefgggg",*str2="aaagggg";
char *max;
puts(str1);
puts(str2);
max=submaxstring(str1,str2);
printf("最长的共同子串:\n");
puts(max);
}
![](http://img.wesiedu.com/upload/7/d2/7d220903debbe886bf821f4e21c0101e.jpg)
关于C语言的一道题:有两个字符串,str1 = "abcdefgggg",str2="aaagggg",要求找出其共同的
B C D选项设有以下变量定义:char str1[]="string",str2[8],*str3,*str4="st
c语言:两个指向字符串的指针,*p1,*p2,请问while(*p1++=*p2++)是什么意思?
C语言,比较两个字符串S1和S2的大小
两个字符串比较大小的程序C语言
C语言编程题目 给一个字符串,请找出出现次数最多的大写英文字母.
c语言书上的一道编程题,输入5个字符串,并按字母顺序排列后输出.程序如下:
C语言 如何把一个字符串中相连的两个数字转化为一个字节?
c语言中两个%%代表什么意思?字符串“%%”的长度是多少?
关于C语言的一道填空题,
String str2 = "";
一道C语言题目 void func(char *s1,char *s2)/*s1为字符串的起始地址s2为新字符串的起始地