于是他错误的点名开始了

用哈希表存储班级学生名单,并记录每个名字的出现次数,初始时,将所有学生名字存入哈希表,计数为 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)

全部评论

相关推荐

03-08 18:11
门头沟学院 Java
Java抽象小篮子:海投就完事了,简历没什么问题,最大问题是学历
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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