热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

C语言数组字符串去重,(C语言实现)字符串/数组去重

第一种实现:不新开数组,也就是原地去重.#include#includevoidRemoveDuplicate(charstr[]);intmain(intargc,char*ar

第一种实现: 不新开数组, 也就是原地去重.

#include #include void RemoveDuplicate(char str[]);

int main(int argc,char *argv[]){ char str[128] = {0}; gets(str); RemoveDuplicate(str); printf(“%s\n”,str); return 0;

}

void RemoveDuplicate(char str[]){ int len = strlen(str); int i,j; int p = 0; for(i = 0;i

}

上面的代码一共出现了3次’\0′, 前2次的’\0’没有什么特殊含义, 可以替换成任何在所给字符串中不会出现的字符. 最后一个’\0’则是C语言中特有的, 是字符串结束标志.就是把所有重复的元素标记成’\0′, 那么剩下的元素则是不重复的元素, 通过变量p, 把这些元素重新添加到结果字符串中即可.

第二种实现:新开一个数组

#include #include void RemoveDuplicate(char str[],char result[]);

int main(int argc,char *argv[]){ char str[128] = {0}; char result[128] = {0}; gets(str); RemoveDuplicate(str,result); printf(“%s\n”,result); return 0;

}

void RemoveDuplicate(char str[],char result[]){ int slen = strlen(str);//源(原)字符串的长度 int rlen;//结果字符串的长度 int i,j; int flag = 0;//重复的标志 for(i = 0; i

}

第三种, 一层循环, 开个ASCII数组进行标记(这种方法很值得我学习掌握)

#include #include void RemoveDuplicate(char str[]);

int main(int argc,char *argv[]){ char str[128] = {0}; gets(str); RemoveDuplicate(str); printf(“%s\n”,str); return 0;

}

void RemoveDuplicate(char str[]){

int len = strlen(str);

char ascii[128] = {0};//ascii数组

int i;

int p = 0; for(i = 0;i

//把字符串中字符用作ascii数组的下标,在遍历str数组的过程中,str[i]首次出现时,str[i]对应//的ascii[str[i]]是0,便将其置1,以后再出现相同的字符时,该字符对应的ascii[]已被置1 if(0 == ascii[str[i]]){ ascii[str[i]] = 1;

str[p++] = str[i]; }

}

str[p] = ‘\0’;

}

第四种, 也是新开ASCII数组进行标记, 实现去2重, 比如输入: sswqswww, 输出: sswqw

#include #include void removeDuplicate(char str[]);

int main (void) { char name[] = “sswqswww”; removeDuplicate(name); printf(“%s\n”, name); return 0;

}

void removeDuplicate(char str[]) { int len = strlen(str); int ascii[128] = {0}; int p = 0; int i; for (i=0; i第五种, 上面的代码简单改下, 既可以实现去n重

#include #include void removeDuplicate(char str[], int n)

int main (void) { char name[] = “sswqswww”; removeDuplicate(name, 2); printf(“%s\n”, name); return 0;

}

void removeDuplicate(char str[], int n) { int len = strlen(str); int ascii[128] = {0}; int p = 0; int i; for (i=0; i


推荐阅读
author-avatar
手机用户2602883655
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有