牛客:HJ19 简单错误记录[华为机考][字符串]
学习要点
- 双哈希表一个记录顺序,一个记录个数
题目链接
简单错误记录_牛客题霸_牛客网
题目描述
解法:双哈希表
// #include <iostream>
#include <bits/stdc++.h>
#include <string>
#include <vector>
using namespace std;int main() {string line_str;unordered_map<string,int> map_count;unordered_map<string,int> map_sort;int _sort = 1;while(getline(cin,line_str)){string tmp_str;int a = line_str.rfind('\\');int b = line_str.rfind(' ');if(( b-a-1) <= 16){tmp_str = line_str.substr(a+1);}else {tmp_str = line_str.substr(b-16);}map_count[tmp_str]++; // 统计个数if(map_sort[tmp_str] == 0) // 记录顺序{map_sort[tmp_str] = _sort;_sort++;}}vector<string> v_line(map_sort.size() +1);for(auto&i:map_sort){v_line[i.second] = i.first + ' ' + to_string(map_count[i.first]);}if(map_sort.size() <= 8){for(int i = 1; i<=map_sort.size();i++){cout << v_line[i] << endl;}}else {for(int i = map_sort.size() -7; i<=map_sort.size();i++){cout << v_line[i] << endl;}}}