题解 | #简单错误记录#

简单错误记录

https://www.nowcoder.com/practice/2baa6aba39214d6ea91a2e03dff3fbeb

#include <iostream>
#include<map>
#include<algorithm>
#include<sstream>
#include<queue>
using namespace std;
//关键是istringStream,很方便地进行字符串分割
string get_file_name(string s){
    istringstream tokenStream(s);
    string token;
    while(getline(tokenStream,token,'\\')){}
    int len=token.length();
    return token.substr(max(0,len-16),min(len,16));
}

int main() {
    map<string,int> m;
    queue<string> q;
    string s;
    while(getline(cin,s)){
        istringstream tokenStream(s);
        string token;
        getline(tokenStream,token,' ');
        string file_name=get_file_name(token);
        getline(tokenStream,token,' ');
        string file_line=file_name+' '+token;
        if(m.count(file_line)==0){
            q.push(file_line);
            while(q.size()>8){
                q.pop();
            }
            m[file_line]=1;
        }else{
            int v=m[file_line]+1;
            m[file_line]=v;
        }
    }
    while(!q.empty()){
        cout<<q.front()<<' '<<m[q.front()]<<endl;
        q.pop();
    }
    return 0;
}
// 64 位输出请用 printf("%lld")

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务