Set解法
2026-04-06 12:58:57
发布于:新疆
1阅读
0回复
0点赞
set 是关联容器,含有键值类型对象的已排序集,搜索、移除和插入拥有对数复杂度.set 内部通常采用 红黑树 实现.平衡二叉树 的特性使得 set 非常适合处理需要同时兼顾查找、插入与删除的情况.
和数学中的集合相似,set 中不会出现值相同的元素.如果需要有相同元素的集合,需要使用 multiset.multiset 的使用方法与 set 的使用方法基本相同. ——OI Wiki
本题核心需求:判断字符串中是否存在重复字符,无重复输出 yes,有重复输出 no。
结合知识点,这是集合(set) 的经典入门应用:利用集合不存储重复元素的特性,快速完成查重
set解法代码:
#include <bits/stdc++.h>
using namespace std;
int main() {
string s;
cin >> s;
set<char> a;
for (char c : s) {
if (a.count(c)) {
cout << "no";
return 0;
}
a.insert(c);
}
cout << "yes";
}
当然也可以用unordered_set
代码:
#include <bits/stdc++.h>
using namespace std;
int main() {
string s;
cin >> s;
unordered_set<char> a;
for (char c : s) {
if (a.count(c)) {
cout << "no";
return 0;
}
a.insert(c);
}
cout << "yes";
}
这里空空如也




有帮助,赞一个