当前位置:网站首页>leetcode 前K个高频单词

leetcode 前K个高频单词

2022-08-10 23:53:00 老鱼37

在这里插入图片描述
思路:
1.运用unordered_map容器将words存放map中,相同字符串不会重复插入,但是value值会递增-----计算单词的出现频率。
2.创建一个pair<string,int>数组 将map中的数据放入并 排好序,按照字典序的方式排序字符串
3.创建string字符数组 然后将前K个高频单词存放 最后返回即可

class Solution {
    
    public:
   static bool cmp(const pair<string,int>&a,const pair<string,int>&b)
   {
    
       if(a.second>b.second)
       {
    
           return true;
       }
       if(a.second==b.second)
       {
    
           if(a.first<b.first)
           {
    
               return true;
           }
       }
       return false;
   }
public:
    vector<string> topKFrequent(vector<string>& words, int k) {
    
        unordered_map<string,int>ppt;
        //记录每个单词出现的频率
        for(auto&ch:words)
        {
    
            ++ppt[ch];
        }
        
        //创建一个vector<string,int>容器来接收map中的数据 进行sort
        vector<pair<string,int>>ps(ppt.begin(),ppt.end());
        //重新排序
        sort(ps.begin(),ps.end(),cmp);
        //创建一个字符数组
        vector<string>ans;
        auto it =ps.begin();
        while(k--)
        {
    
            ans.emplace_back(it->first);
            it++;
        }
        return ans;
    }
};

如有错误,多多指教

原网站

版权声明
本文为[老鱼37]所创,转载请带上原文链接,感谢
https://blog.csdn.net/qq_61342044/article/details/126256444