千家信息网

如何用c语言求两个字符串的交集

发表于:2025-01-17 作者:千家信息网编辑
千家信息网最后更新 2025年01月17日,这期内容当中小编将会给大家带来有关如何用c语言求两个字符串的交集,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。求两个字符串的交集,看似简单,实则需要考虑的细节很多。
千家信息网最后更新 2025年01月17日如何用c语言求两个字符串的交集

这期内容当中小编将会给大家带来有关如何用c语言求两个字符串的交集,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

求两个字符串的交集,看似简单,实则需要考虑的细节很多。

我的思路:

1.将两个字符串简化,将里面重复的字母减少为一个。

2.拼接两个字符串,借助循环把重复出现两次的字符找出来。

有了思路开始写代码。

一、main()函数

思路:

1.定义两个储存字符串的数组tt[M],pp[M]

2.定义指针*p接收fun2() 返回值,输出交集

3.输入两个字符串(此处注意越界问题)

4.调用函数

5.输出交集

#include #include              //用到strcat(),strlen()函数 #define M 50 void fun1(char tt[]);           //将字符串中相同的字母去掉char *fun2(char tt[]);          //将重复的(子集)找出来  int main(){    char tt[M],pp[M];           //定义两个数组,储存字符串    char *p;                    //接受fun2()返回的地址,并输出交集字符串    int i;     gets(tt);                   //abcdef123abc12    gets(pp);                   //acef123ace124    fun1(tt);                   //调用函数    fun1(pp);                               //printf("%s\n",tt);        //供检验使用    //printf("%s\n",pp);        strcat(tt,pp);    //printf("%s\n",tt);    p=fun2(tt);                 //调用函数    for(i=0;*(p+i)!='\0';i++)    {        printf("%c",*(p+i));    //acef123    }     return 0;}

二、fun1()函数

fun1()作用是将字符串中重复的字符只保留一个

思路:

1.先将重复出现的字符出去第一次出现那个都换成' '(此处为一个空格)

2.在将字符串数组元素移动,去除' '(空格)

void fun1(char tt[])            //将重复的字符抹掉{    int i,j;    char ch;     for(i=0;i

三、fun2()函数

fun2()将重复出现的字符挑出来

思路:

1.找到相同字符,并储存在static aa[M]中(小重点)

2.返回第一个字符的地址

char *fun2(char tt[])           //确定子集字符串,返回字符串第一个字符的地址{    int i,j,k;    char ch;    static char aa[M];          //静态变量,保证调用函数结束后数组还在    char *p;     k=0;     for(i=0;i

注意;

这个代码任然后缺陷,因为用这个代码求得两个字符串的交集永远不会出现空格。

其他思路推荐:

先在第一个字符串中确定一个字符,在第二个字符串中查找是否存在相同字符串

这条思路特要注意字符串中字符重复出现带来的影响

上述就是小编为大家分享的如何用c语言求两个字符串的交集了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注行业资讯频道。

0