查找字符串中存在的不同字符

时间:2017-05-25 05:13:54

标签: c++ string

有没有办法找到字符串中存在的所有唯一字符而不会发现字符串的所有出现? 例如,设为字符串a =“mississippi”,输出应为{i,m,p,s} 。是否有任何内置函数可以在c ++中找到它?

3 个答案:

答案 0 :(得分:8)

您可以使用std::sort, std::unique, std::string::erase

执行此操作

注意:原始字符串将被修改[如果您不想复制它]

std::string str = "mississippi";
std::sort(std::begin(str), std::end(str));
auto last = std::unique(std::begin(str), std::end(str));
str.erase(last, std::end(str));

答案 1 :(得分:2)

制作set个字符并将字符串中的所有项目放入其中,然后您将设置"字母"你的字符串。

E.g:

#include <string>
#include <iostream>
#include <set>

int main(void)
{
    std::string a = "mississippi";
    std::set<char> alphabet;
    alphabet.insert(a.begin(), a.end());
    std::cout << "Set of chars has " << alphabet.size() << " items." << std::endl;
    for (auto a : alphabet)
    {
        std::cout << a << std::endl;
    }
}

在该示例中未修改原始字符串,并且无需预先排序。

答案 2 :(得分:0)

听起来不太常见,它不是STL的一部分 我只是尝试遍历字符串并创建/增加Hashset中的数字计数。然后,抓住所有键以确定唯一值。 祝你好运