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