c++string删除重复字符
时间: 2024-09-07 08:05:14 浏览: 35
在C++中,可以使用标准库中的`string`类和算法库中的函数来删除字符串中的重复字符。一个常用的方法是使用`std::unique`函数,它可以将连续的重复字符移至字符串的末尾,并返回一个指向新的无重复连续元素序列末尾的迭代器。然后,可以使用`erase`函数删除从该迭代器开始到字符串末尾的所有元素。这种方法只会删除连续的重复字符,如果你需要删除所有重复字符(无论是否连续),则需要进行额外的步骤。
以下是一个简单的示例代码:
```cpp
#include <iostream>
#include <string>
#include <algorithm>
int main() {
std::string str = "banana";
// 使用std::unique来去除连续重复的字符
auto last = std::unique(str.begin(), str.end());
// 删除unique函数之后的重复字符
str.erase(last, str.end());
std::cout << "After removing consecutive duplicates: " << str << std::endl; // 输出 "banana"
// 若要删除所有重复字符,可以使用set来辅助
std::set<char> chars;
std::string::iterator it = str.begin();
for(; it != str.end();) {
if(chars.find(*it) != chars.end()) {
// 如果字符已经在set中,则删除
it = str.erase(it);
} else {
// 否则,将其加入set中,并移动迭代器
chars.insert(*it);
++it;
}
}
std::cout << "After removing all duplicates: " << str << std::endl; // 输出 "ban"
return 0;
}
```