于是他错误的点名开始了
用哈希表存储班级学生名单,并记录每个名字的出现次数,初始时,将所有学生名字存入哈希表,计数为 1; 处理教练点名时, 若名字不在哈希表中输出 WRONG, 若名字在表中且计数为1输出 OK 并将计数加 1, 若名字在表中且计数大于1输出 REPEAT。
#include <bits/stdc++.h>
using namespace std;
int main(){
int n;
cin>>n;
unordered_map<string,int>cnt; // 存储学生名字及点名次数
while(n--){
string s;cin>>s;
cnt[s]++; // 初始化学生
}
int p;
cin>>p;
while(p--){
string s;
cin>>s;
if(cnt[s]==0)cout<<"WRONG\n"; // 名字不存在
else if(cnt[s]==1){cout<<"OK\n";cnt[s]++;} // 第一次正确点名
else cout<<"REPEAT\n"; // 重复点名
}
return 0;
}
时间复杂度:O(n+m) 空间复杂度:O(n)

