题解 | #简单错误记录#
简单错误记录
https://www.nowcoder.com/practice/2baa6aba39214d6ea91a2e03dff3fbeb
#include <iostream> using namespace std; #include <unordered_map> #include <deque> int main() { unordered_map<string, int>dic; deque<string>dq; string s; while (getline(cin, s)) { // 截取代码行数和文件名作为字典的key 文件名限制16位 int n = s.size(), cnt = 1, i = n - 1; for (; i >= 0 && cnt <= 16 ; i--) { if (s[i] == '\\') { break; } if (!isalpha(s[i])) { continue; } else { cnt++; } } //出循环i要么遇到'\'要么在第16位字符上溢出了 s = s.substr(i + 1); //s中存储着截取代码行数和文件名 if(!dic.count(s)){ dq.push_back(s); } dic[s]++; } int sz = dq.size(); deque<string>::iterator it = dq.begin(); if(sz > 8){ it = dq.begin() + sz - 8; } for(; it != dq.end(); it++){ cout<<*it<<' '<<dic[*it]<<endl; } } // 64 位输出请用 printf("%lld") // 对输入的字符串做如下操作 // 截取代码行数和文件名作为字典的key 文件名限制16位 // 将文件名和代码行数作为字符串加入字典 // 不在字典中再加入队列