题解 | #简单错误记录#

#include <bits/stdc++.h>

using namespace std;
//只用输出最后出现的八条错误记录——考虑队列,超过八条时弹出 (双端队列,从后端进,从前端出)
//对相同的错误记录只记录一条,但是错误计数增加——考虑哈希表,键为错误记录,值为错误计数


int main(){
    string str = "";
    unordered_map<string, int> mp;
    deque<string> dq;
    
    while(getline(cin, str)){
        str = str.substr(str.find_last_of('\\') + 1); 
        //cout << str << endl; //cqzlyaszjvlsjmkwoqijggmybr 645
        int spacePos = str.find_last_of(' '); //从0开始的第26个索引处是空格
        //cout << spacePos << endl; //26
        if(spacePos > 16){
            str = str.substr(spacePos - 16);
            //cout << str << endl; //lsjmkwoqijggmybr 645
        }
        
        if(mp.find(str) == mp.end()){
            dq.push_back(str);
        }
        mp[str]++;
        
        //cout << dq.front() << endl; //lsjmkwoqijggmybr 645
        if(dq.size() > 8) dq.pop_front(); //超过八条则 从前面推出
    }
    
    for(auto s : dq){
        cout << s << " " << mp[s] << endl;
    }
    
    return 0;
}
全部评论

相关推荐

不愿透露姓名的神秘牛友
07-07 13:46
点赞 评论 收藏
分享
06-25 16:25
梧州学院 Java
愿汐_:项目介绍那么长,然而你做了啥就一句话?
点赞 评论 收藏
分享
05-19 15:21
已编辑
门头沟学院 Java
白火同学:你才沟通了200,说实话,北上广深杭这里面你连一座城市的互联网公司都没投满呢,更别说还有各种准一线二线城市了。等你沟通突破了三位数,还没结果再考虑转行的事吧。
点赞 评论 收藏
分享
真起不了响亮的名字:九月份人家投秋招你投实习嘛,会不会有点晚了,算你九月份直接上岗,实习三个月后一月初去和别人抢秋招补录还是备战春招啊更别说休息一个月后还要重新复习八股和算法
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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