题解 | #字符串出现次数的TopK问题#

字符串出现次数的TopK问题

http://www.nowcoder.com/practice/fd711bdfa0e840b381d7e1b82183b3ee

通过哈希表统计每个字符串出现的次数,pair<string,int>,自定义排序lambda对象,取前k个即可。

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) {
        unordered_map<string,int> un_map{};
        for(auto str: strings) un_map[str]++;
        auto cmp=[](pair<string,int> a,pair<string,int> b){
            if(a.second==b.second) return a.first<b.first;
            else return a.second > b.second;
        };
        vector<pair<string,int>> vec{};
        for(auto& x: un_map) vec.push_back(x);
        sort(vec.begin(),vec.end(),cmp);
        vector<vector<string>> result;
        for(int i=0;i<k;i++){
            vector<string> res{};
            res.push_back(vec[i].first);
            res.push_back(to_string(vec[i].second));
            result.push_back(res);
        }
        return result;
    }
};




全部评论

相关推荐

01-05 09:14
同济大学 Java
心碎一号线:我要是9✌🏻我就选保研,保研了大四再找实习,实习之后,如果觉得自己不适合互联网工作模式,还能有其他选择,如果实习后决定了走互联网,也能提升学历提高竞争力
点赞 评论 收藏
分享
完了_我学不完了:老哥啥时候进的评估呀俺是云三
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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