题解 | #字符串出现次数的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;
    }
};
全部评论

相关推荐

01-14 15:08
东南大学 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务