力扣316去除重复字母C语言实现
时间: 2024-12-19 12:13:43 浏览: 5
力扣316题是一个字符串处理题目,要求删除给定字符串中的重复字符并保持字符顺序不变。这是一个经典的滑动窗口算法问题,在C语言中可以这样实现:
```c
#include <stdio.h>
#include <stdbool.h>
#include <string.h>
bool used[256]; // 用于记录每个字符是否出现过
void removeDuplicates(char* s) {
int n = strlen(s), i = 0;
for (int j = 0; j < n; ++j) {
if (!used[s[j]]) { // 如果字符未使用
s[i++] = s[j];
used[s[j]] = true; // 标记为已使用
}
}
s[i] = '\0'; // 结束字符串
}
int main() {
char str[] = "cbacdcbc";
printf("Original string: %s\n", str);
removeDuplicates(str);
printf("String after removing duplicates: %s\n", str);
return 0;
}
```
在这个代码中,我们创建了一个布尔数组`used`来跟踪字符是否已经被遇到过。遍历输入字符串`s`,如果当前字符还没被使用过,我们就将其复制到结果位置并将相应位设为真。这个过程会保留第一次出现的字符,并忽略后续的重复。
阅读全文