题解 | #简单错误记录#
简单错误记录
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")
