对于字符串,如何删除重复的字符

For strings, how do I remove repeated characters?

本文关键字:删除 字符 字符串 何删除      更新时间:2023-10-16

我想要的字符串操作过程:如果一个字符有多个连续实例,只保留第一个字母。给定"Steelsmith",删除第一个"e",留下字符串"Stelsmith"。

这是我的算法:

void replace(string s)
{
    int length = s.length();
    for (int i = 0; i < length; i ++)
    {
        if (s[i] == s[i + 1])
        {
            s.erase(1+i);
        }
    }
    cout << s << endl;
}

当我输入"Steelsmith"时,输出是"Ste",所以它删除了第二个"e",以及字符串的其余部分。如何保留原始字符串的其余部分?

您可以使用内置方法进行如下编码:

s.erase(std::unique(s.begin(), s.end()), s.end());

使用形式:string& erase (size_t pos = 0, size_t len = npos);

自变量是位置和长度:

s.erase( i+1 , 1 ) ;

你可以在这里看到它的作用:http://ideone.com/GhWoi0