题解 | #简单错误记录#

简单错误记录

http://www.nowcoder.com/practice/2baa6aba39214d6ea91a2e03dff3fbeb

参考大神的结合自己的,刚开始最大的坑就是unordered_map的输出顺序是不一定的,和插入顺序无关,且没有rbegin(),rend()迭代器*,靠,被这个坑了半天,大神的做法就是循环取余操作,这个不得不说秒啊想起了循环队列,我靠这可比我再用一个map<int,string>记录排序先后巧妙多了,而且空间复杂度一直是n+8

#include <bits/stdc++.h>
using namespace std;
int main(int argc,char *argv[])
{
    string str;
    unordered_map<string,int> unmap;
    vector<string> record(8,"");
    int start_index=0;
    string row="";
    while(cin>>str>>row)
    {
        int len=str.size();
        int j=len-1;
        for(;j>=0;j--)
        {
            if(str[j]=='\\'||len-j==17)break;
        }
        string error=str.substr(j+1,len-j-1)+" "+row;
        
        if(unmap[error]==0)
        {
            record[start_index]=error;
            start_index=(start_index+1)%8;
        }
        unmap[error]++;  
    }
    for(int i=0;i<8;i++)
    {
        if(record[start_index] != ""){
            cout << record[start_index] << " " << unmap[record[start_index]] <<endl;
        }
        start_index = (start_index + 1) % 8;
    } 
}
全部评论

相关推荐

04-19 10:50
门头沟学院 Java
想奋斗的小山竹在改简...:学院本能过简历筛选吗,我怎么看一些一本都过不了
点赞 评论 收藏
分享
03-29 18:59
运城学院 Java
程序员小白条:咱们要对自己的简历和学历有清晰的认知,不要动不动就大厂了....都26届了,没实习还想着大厂,唉
点赞 评论 收藏
分享
评论
3
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务