用c语言实现字符串去重
时间: 2023-11-27 08:01:02 浏览: 183
以下是一种可能的实现方式:
```c
#include <stdio.h>
#include <string.h>
void remove_duplicates(char *str) {
if (str == NULL) {
return;
}
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];
}
}
str[tail] = '\0';
}
int main() {
char str[] = "Hello, world!";
printf("Before: %s\n", str);
remove_duplicates(str);
printf("After: %s\n", str);
return 0;
}
```
该函数的基本思路是:从第二个字符开始,依次判断是否与前面的字符重复,如果不重复就加入到结果字符串中。用一个变量 `tail` 记录结果字符串的尾部位置,每次加入新字符时 `tail` 加一。最后在结果字符串结尾处加上 `\0`,表示字符串结束。注意需要特判空指针和长度小于 2 的字符串。
例如,对于输入字符串 "Hello, world!",输出结果为 "Helo, wrd!"。
阅读全文