set的优点:
1.自动排序
2.不需要考虑大小;
3.去重
string更像是一种字符串数组的优化版
计算集合的并
给你两个集合,计算其并集,即
。
注: 中不允许出现重复元素,但是
与 之间可能存在相同元素。
输入格式
输入数据分为三行,第一行有两个数字
,分别表示集合 A 和集合 B 的元素个数。后两行分别表示集合 A 和集合 B。每个元素为不超出int
范围的整数,每个元素之间用一个空格隔开。
输出格式
输出一行数据,表示合并后的集合,要求从小到大输出,每个元素之间用一个空格隔开。
样例输入1
1 2
1
2 3
样例输出1
1 2 3
样例输入2
1 2
1
1 2
样例输出2
1 2
#include<stdio.h>
#include<string>
#include<math.h>
#include<iostream>
#include<set>
//集合,1.自动有序(升序);2.不重复
using namespace std;
int main()
{
set<int>str;//定义
int n,m,a,i,j;
cin>>n>>m;
for(i=0;i<n;i++)
{
cin>>a;
str.insert(a);//插入
}
for(i=0;i<m;i++)
{
cin>>a;
str.insert(a);
}
set<int>::iterator it;//迭代器
for(it = str.begin();it!=str.end();it++)
{
if(it== str.begin())
{
cout<<*it;
}
else
{
cout<<" "<<*it;
}
}
return 0;
}
学英语
小A快要考托福了,这几天,小A每天早上都起来记英语单词。小B时不时地来考一考蒜头君:小B会询问蒜头君一个单词,如果小A背过这个单词,小A会告诉小B这个单词的意思,不然小A会跟小B说还没有背过。单词是由连续的大写或者小写字母组成。注意单词中字母大小写是等价的。比如"You"
和"you"
是一个单词。
输入格式
首先输入一个
表示事件数。接下来 n 行,每行表示一个事件。每个事件输入为一个整数 d 和一个单词 word(单词长度不大于 20),用空格隔开。如果 d=0,表示小A记住了 word 这个单词,如果 d=1,表示这是一个 测试,测试小A是否认识单词 word(小B不会告诉蒜头君这个单词的意思)。事件的输入是按照时间先后顺序输入的。
输出格式
对于小B的每次 测试,如果小A认识这个单词,输出一行"Yes"
, 否则输出一行"No"
。
样例输入1
5
0 we
0 are
1 family
0 Family
1 Family
样例输出1
No
Yes
样例输入2
4
1 jisuanke
0 Jisuanke
0 JISUANKE
1 JiSuanKe
样例输出2
No
Yes
#include<stdio.h>
#include<string>
#include<math.h>
#include<iostream>
#include<set>
using namespace std;
int main()
{
int n,a,i,j;
set<string>str;
cin>>n;
string word;
for(i=0;i<n;i++)
{
cin>>a>>word;
for(j=0;j<word.length();j++)
{
word[j]=tolower(word[j]);//大写转小写
}
if(a==0)
{
str.insert(word);
}
else
{
if(str.count(word))
{
cout<<"Yes"<<endl;
}
else
{
cout<<"No"<<endl;
}
}
}
return 0;
}