给一非空的单词列表,返回前 k 个出现次数最多的单词。
返回的答案应该按单词出现频率由高到低排序。如果不同的单词有相同出现频率,按字母顺序排序。
class Solution {
public:
vector<string> topKFrequent(vector<string>& words, int k)
{
map<string, int> m;
//统计单词出现次数
for(const auto& wd : words)
{
++m[wd];
}
multimap<int, string,greater<int>> m2;
//按照string大小遍历,字母序遍历
for(const auto& p : m)
{
m2.insert(make_pair(p.second,p.first));
}
int n = 0;
vector<string> str;
for(const auto& p : m2){
if(n < k){
str.push_back(p.second);
n++; }
else{
break;
}
}
return str;
}
};