/*----------------------------------------------------------------------- 【程序设计】 ------------------------------------------------------------------------- 题目:编写函数实现输入一串字符串,删除字符串中的重复的字符,然后输出新的 字符串(重复字符保留第一次出现的字符) 输入输出如下所示 请输入一串字符串: mn,mn.,mzxcv,nkh021215468796468765465 去除重复字符后的字符串为: mn,.zxcvkh021546879 ------------------------------------------------------------------------- 注意:请勿改动程序中的其他内容,请勿重新定义变量名。 ------------------------------------------------------------------------*/ #include <stdio.h> #include <string.h> void removeDuplicates(char *str); int main() { char str[100]; printf("【请输入一个字符串: 】"); fgets(str, sizeof(str), stdin); str[strcspn(str, "\n")] = 0; removeDuplicates(str); printf("【去除重复字符后的字符串为:】 %s\n", str); return 0; } void removeDuplicates(char *str) { int seen[256] = {0}; int writeIdx = 0; int i; int len = strlen(str); if (str == NULL) return; if (len <= 1) return; /**********Program**********/ for(i=0;i<len-1;i++){ for(writeIdx=i+1;writeIdx<len;writeIdx++){ if(str[i] == str[writeIdx]){ seen[writeIdx] = 1; } } } writeIdx = 0; for(i=0;i<len;i++){ if(seen[i]==0){ str[writeIdx++] = str[i]; } } /********** End **********/ str[writeIdx] = '\0'; }