删除重复出现的字符

V.H*_*adi 1 c++ string character recurring

对于我在C++中尝试的一些东西,我已经接受了一个字符串(比如'番茄是红色的')并且摆脱了空间('atomatoisred').

现在我将如何仅删除重复出现的字符,条件是该字符的第一个实例保持不变(所以我们的例子变为'atomisred')?

提前致谢!

Kon*_*lph 7

您可以将erase-remove惯用法与重复字符的集合保持跟踪结合使用:

std::set<char> dupes;

str.erase(
    std::remove_if(
        str.begin(), str.end(),
        [&](char c) { return not dupes.insert(c).second; }),
    str.end());
Run Code Online (Sandbox Code Playgroud)

这也使用了返回值std::set::insert是一对的事实,其第二个元素是bool指示插入是否发生的对.