题目链接:4269. 校庆
思路
先将所有校友信息存入一个哈希表中,然后每次输入来宾信息时,就看该来宾是否在哈希表中,存在即将人数+1,并且相比较得到最年长的(越小越年长)。同时每次输入来宾信息时也要比较大小,得出最年长的。
这里7~14位为生日,用substr(6,8)获取字串
unordered_set 容器具有以下几个特性:
1.不再以键值对的形式存储数据,而是直接存储数据的值;
2.容器内部存储的各个元素的值都互不相等,且不能被修改。
3.不会对内部存储的数据进行排序(这和该容器底层采用哈希表结构存储数据有关)
代码
#include <iostream>
#include <unordered_set>
using namespace std;
int main()
{
int n,m;
string a,b;//a为校友,b为来宾
unordered_set<string> hash;
cin>>n;
while(n--)
{
cin>>a;
hash.insert(a);
}
cin>>m;
int cnt=0;
string ma,mb;//ma为最年长的校友,mb为最年长的来宾
while(m--)
{
cin>>b;
if(hash.count(b))
{
cnt++;
if(ma.empty()||b.substr(6,8)<ma.substr(6,8)) ma=b;
}
if(mb.empty()||b.substr(6,8)<mb.substr(6,8)) mb=b;
}
cout<<cnt<<endl;
if(cnt) cout<<ma;
else cout<<mb;
return 0;
}