关于C语言的一道题:有两个字符串,str1 = "abcdefgggg",str2="aaagggg",要求找出其共同的
来源:学生作业帮 编辑:拍题作业网作业帮 分类:综合作业 时间:2024/05/23 01:56:56
关于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)
两个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);
}
#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);
}
关于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为新字符串的起始地