题解 | #简单错误记录#
简单错误记录
http://www.nowcoder.com/practice/2baa6aba39214d6ea91a2e03dff3fbeb
用vector容器来保存文件和行号拼接成的字符串
用unordered_map来统计相同的错误
#include<iostream>
#include<vector>
#include<unordered_map>
#include<string>
using namespace std;
vector<string> textName;
unordered_map<string, int> um;
void countError(const string& str, const int& n);
int main(){
string s;
int num;
while(cin >> s >> num){
countError(s, num);
}
int i = 0;
if(textName.size() > 8){
i = textName.size() - 8;
}
for(i; i < textName.size(); ++i){
cout << textName[i] << " " << um[textName[i]] << endl;
}
return 0;
}
void countError(const string& str, const int& n){
string temp;
int i = str.size() - 1;
while(i >= 0 && str[i] != '\\'){
i--;
}
if(str.size() - i - 1 > 16){ //判断文件名是否超过16位
temp = str.substr(str.size() - 16, 16);
}else{
temp = str.substr(i + 1, str.size() - i - 1);
}
temp = temp + " " + to_string(n); //将文件名和行号拼接作为key值
if(um.find(temp) == um.end()){
textName.push_back(temp);
}
um[temp]++;
}
腾讯音乐娱乐集团公司福利 283人发布
