题解 | #去除字符串中重复的字符#

去除字符串中重复的字符

http://www.nowcoder.com/practice/ffaf8888a89a4bbab80767d18b401a26

题目的主要信息:

  • 获取一串字符串,要求去除重复的字符,请使用set解决
  • 直接从 set 中输出字符,不要求顺序

具体做法:

set是STL的集合容器,相同的元素在set中只保留一次,而且set还会依赖于红黑树自动排序,如果是字符依靠ASCⅡ码的大小排序。

我们建立一个set,遍历字符串,然后将每个字符都插入到set中,它会自动去重加排序,然后我们用迭代器遍历set,输出每个迭代器的元素即可。 alt

#include <iostream>
#include <set>
using namespace std;

int main() {

	char str[100] = { 0 };
	cin.getline(str, sizeof(str));
    set<char> s;
    for(int i = 0; str[i] != '\0'; i++) //遍历字符串
        s.insert(str[i]); //将字符加入到set中
    for(auto iter = s.begin(); iter != s.end(); iter++) //遍历set输出字符
        cout << *iter;
	return 0;
}

复杂度分析:

  • 时间复杂度:O(nlog2n)O(nlog_2n),其中nn为字符串长度,一共nn个字符,每次插入的代价都是O(log2n)O(log_2n)
  • 空间复杂度:O(n)O(n),集合的大小最坏为nn
孤帆远影碧空尽 文章被收录于专栏

牛客网各类题单题解~

全部评论

相关推荐

烤点老白薯:他第二句话的潜台词是想让你帮他点个瑞幸或者喜茶啥的
mt对你说过最有启发的一...
点赞 评论 收藏
分享
评论
6
2
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务