题解 | #简单错误记录#

简单错误记录

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位
// 将文件名和代码行数作为字符串加入字典
// 不在字典中再加入队列

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务