题解 | #字符串出现次数的TopK问题#
字符串出现次数的TopK问题
http://www.nowcoder.com/practice/fd711bdfa0e840b381d7e1b82183b3ee
最近在看stl标准库,用容器和迭代器特性完成。
class Solution {
public:
/**
* return topK string
* @param strings string字符串vector strings
* @param k int整型 the k
* @return string字符串vector<vector<>>
*/
vector<vector<string> > topKstrings(vector<string>& strings, int k) {
// write code here
multimap<int,string> mmp;
map<string,int> mp;
vector<vector<string>> vvs;
for(auto p=strings.begin();p!=strings.end();++p)
mp[*p]+=1;
for(auto p:mp)
mmp.insert(make_pair(p.second, p.first));
auto p=mmp.rbegin();
auto q=mmp.find(p->first);
auto o=p;
while(k--){
p++;
vvs.push_back({q->second,to_string(q->first)});
if(*q==*o){
q=mmp.find(p->first);
o=p;
}
else q++;
}
return vvs;
}
};