给个双指针字符串去重的C语言代码
时间: 2024-09-10 12:12:49 浏览: 29
在C语言中,可以使用两个指针(一个指向数组开头,另一个指向待检查位置),结合循环和条件判断来实现字符串去重。这里是一个基本的例子,假设我们有一个字符数组`str`:
```c
#include <stdio.h>
#include <string.h>
void removeDuplicates(char str[]) {
int len = strlen(str);
if (len == 0) return; // 如果字符串为空,直接返回
char* left = str;
char* right = str + len - 1;
while (left < right) {
// 当前左指针指向的字符小于等于右指针的字符,则交换并移动左指针
if (*left <= *right) {
++left;
} else { // 否则,右指针已找到重复字符,将其移至末尾,并向左移动
memmove(right, right + 1, sizeof(char)); // 使用memmove防止覆盖未处理的字符
--right;
}
}
// 结果字符串截断到无重复部分
str[len] = '\0';
}
int main() {
char str[] = "helloo";
removeDuplicates(str);
printf("去重后的字符串: %s\n", str);
return 0;
}
```
这个程序会将输入字符串中的重复字符去掉,如上述例子中的"helloo"会被转换为"hello"。
阅读全文