字符串去重 c++ 不使用数组,不使用set
时间: 2024-01-08 11:03:05 浏览: 108
可以使用双指针来实现字符串去重,具体操作如下:
1. 将字符串转成字符数组,使用双指针 i 和 j,其中 i 表示当前处理过的最后一个不重复字符的位置,j 表示当前遍历到的字符位置。
2. 遍历字符数组中的每个字符,如果该字符在 i 及其之前的位置中没有出现过,则将该字符加入到 i+1 的位置,并将 i 向右移动一位。
3. 返回截取前 i+1 个字符的字符串。
代码如下:
```c++
#include <iostream>
#include <string>
using namespace std;
string remove_duplicate_chars(string s) {
int n = s.size();
char* char_array = new char[n];
for (int i = 0; i < n; i++) {
char_array[i] = s[i];
}
int i = 0;
for (int j = 0; j < n; j++) {
bool found = false;
for (int k = 0; k < i; k++) {
if (char_array[k] == char_array[j]) {
found = true;
break;
}
}
if (!found) {
char_array[i] = char_array[j];
i++;
}
}
return string(char_array, i);
}
int main() {
string s = "abcaabbcc";
string result = remove_duplicate_chars(s);
cout << result << endl; // 输出:abc
return 0;
}
```
注意:为了避免频繁的字符串拼接操作,这里使用字符数组来实现去重,并最后再转成字符串。同时,为了避免数组越界,需要先将字符串转成字符数组。
阅读全文