C语言实现删除字符串中重复的字符的两种方式 您所在的位置:网站首页 c语言删除字符的函数 C语言实现删除字符串中重复的字符的两种方式

C语言实现删除字符串中重复的字符的两种方式

2024-06-03 08:28| 来源: 网络整理| 查看: 265

 方式一:

#include #include void re(char *p){ char *r = p; char a[32] = "\0"; a[0]=*p; for(p = p+1; *p; p++){ int flages = 0; char t = *p; int i = 0; for( ; a[i]; i++){ if(t == a[i]){ flages=1; break; } } if(f!lages){ a[i]=t; } } strcpy(r,a); } int main(){ char a[32]; scanf("%s",a); re(a); printf("%s\n",a); return 0; }

思路:通过数组来存取字符串中不同的字符,然后赋值给原数组来实现

步骤:1)定义数组a存放传入字符中不同的字符;

          2)因为后续会更改指针,定义一个指针r来保存原来数组的首地址,并将传入的字符串的首个元素赋值给a数组的第一个元素;

           3)从第二个字符开始遍历与数组中所有字符比较,若存在则使flages置为1;

                注意:这里的flages的定义放在了第一层循环内这样每次执行循环时不必再将flages置为0;

          4)判断flages是否为0即可知道当前遍历的t是否为该数组中元素(flages==0)则赋值,采用strlen找到该数组中第一个‘\0’的位置;

         5)通过strcpy将a数组中的值传入实参的数组中(注意:使用strcpy要加头文件);

方式二:

#include char *fun(char *p){ char *r = p; while(*p){ char *q = p+1; while(*q){ if(*p == *q){ while(*(q+1)){ *q = *(q+1); q++; } *q='\0'; q=p; } q++; } p++; } return r; } int main(){ char a[32]; scanf("%s",a); fun(a); printf("%s\n",a); return 0; }

思路二:

遍历字符串,每次固定一个字符,从固定字符的下一个字符开始往后循环遍历,当检测到有相同字符时通过后一个字符往前移动一位来覆盖原来的值,每次移动一轮后将最后一个字符标记为‘\0’

例如:aaabbbccc

        aabbbccc

        abbbccc

        abbccc

        abccc

        abcc

        abc

这种方式的时间复杂度太高



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有