实现思虑: 设置一个变量来表示字符串不同字符的长度tail , 从第二个元素开始,逐一往后比较,
不同的忽略,相同的追加在后面 , 然后把tail加一 , 最后循环元素后加上字符串结束符 ' \0 ' .
1. 两重循环,外循环从tail (表示字符串不同字符)开始,遍历整个字符串,内循环循环则遍历 taill(长度)之前的字符,判断是否有相同的,如果有相同的,后一个元素往前移动.
1.
#include<stdio.h>
void remove_duplicates(char* str) {
int len = strlen(str);
if (len < 2) {
return;
}
int tail = 1;
for (int i = 1; i < len; ++i) {
int j;
for (j = 0; j < tail; ++j) {
if (str[i] == str[j]) {
break;
}
}
if (j == tail) {
str[tail] = str[i];
++tail;
}
}
str[tail] = '\0';
}
void mian(){
char str[] = "aaaabbbbbcddddc";
remove_duplicates(str);
printf("%s\n",str);
system("pause");
}
实现结果: