题解 | #简单错误记录#

简单错误记录

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]++;
}
全部评论

相关推荐

应届生腾讯校招提前实习是不是100%薪资?
宝你的offer真好看:好像实习 6 个月还算工龄
投递腾讯等公司10个岗位 >
点赞 评论 收藏
分享
喜欢走神的孤勇者练习时长两年半:爱华,信华,等华,黑华
点赞 评论 收藏
分享
头像
10-15 22:27
已编辑
门头沟学院 C++
罗格镇的小镇做题家:我投了hr打电话来说学历太低了不符合要求,建议投荣耀,结果荣耀也投了一定水花没有,非本211硕
投递华为等公司10个岗位
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务