学会了优先队列对我来说最强大的一点是,可以使用 priority_queue 依据 value 对 unordered_map 排序。

class Solution {public:struct cmp{bool operator()(const pair<int,int>& a,const pair<int,int>& b){return a.second < b.second;}};string frequencySort(string s) {string ret;unordered_map<char,int> myMap;for(auto &ch : s){myMap[ch]++;}priority_queue<pair<int,int>,vector<pair<int,int>>,cmp> que;for(auto& p:myMap){que.push(p);}while(!que.empty()){for(int i = 0;i < que.top().second;i++){ret += que.top().first;}que.pop();}return ret;}
};

别人的做法
1、先把相同的字符做成字符子串
2、根据字符子串进行排序,使用 lambda 表达式
3、再把排序好后的子串进行拼接

string frequencySort(string s) {unordered_map<char, int> unmp;for (const auto& a : s)unmp[a]++;vector<vector<char>> result;for (auto it = unmp.begin(); it != unmp.end(); ++it) {vector<char> temp;for (int i = 0; i < it->second; ++i) {temp.push_back(it->first);}//先把相同的字符做成字符子串result.push_back(std::move(temp));}sort(result.begin(), result.end(), [](const vector<char> &a, const vector<char> & b) { return a.size() > b.size(); });//这里改写,不再使用auto了s = "";for (const auto &a : result) {for (const auto &b:a)s += b;}return s;
}

移动拷贝和复制拷贝的区别
参考文章:C++11——移动构造函数及std::move() 的使用


2022-1-29 Leetcode 451.根据字符出现的频率排序相关推荐

  1. Leetcode 451. 根据字符出现频率排序 解题思路及C++实现

    解题思路: 先使用unordered_map对字符串s中字符,进行频数统计: 再使用最大堆,对unorder_map进行排序: 接着将排序结果存在结果字符串res中. class Solution { ...

  2. leetcode 451. 根据字符出现频率排序

    给定一个字符串,请将字符串里的字符按照出现的频率降序排列. 示例 1:输入: "tree"输出: "eert"解释: 'e'出现两次,'r'和't'都只出现一次 ...

  3. LeetCode 451. 根据字符出现频率排序(map+优先队列)

    1. 题目 给定一个字符串,请将字符串里的字符按照出现的频率降序排列. 输入: "tree"输出: "eert" 2. 优先队列解题 先用map统计字符出现次数 ...

  4. LeetCode 451 根据字符出现频率排序

    题目描述 给定一个字符串,请将字符串里的字符按照出现的频率降序排列. 题解 桶排序 代码 class Solution { public:string frequencySort(string s) ...

  5. LeetCode 451. 根据字符出现频率排序(Sort Characters By Frequency)

    题目描述: 给定一个字符串,请将字符串里的字符按照出现的频率降序排列. 示例 1: 输入: "tree"输出: "eert"解释: 'e'出现两次,'r'和't ...

  6. LeetCode Algorithm 451. 根据字符出现频率排序

    451. 根据字符出现频率排序 Ideas Python解法:用个计数器,然后遍历计数器把相应字符乘以出现次数拼接起来就可以了. Code Python from collections import ...

  7. 2022.09.29 周四

    2022.09.29 周四 回顾 元组 容器:(数据1,数据2,数据3,--) 不可变的:有序的 元素:没有要求 集合 容器:{数据1,数据2,数据3,--} 可变的:无序的: 元素:不可变的数据:唯 ...

  8. LeetCode中等题之根据字符出现频率排序

    题目 给定一个字符串,请将字符串里的字符按照出现的频率降序排列. 示例 1: 输入: "tree" 输出: "eert" 解释: 'e'出现两次,'r'和't' ...

  9. 洛谷 刷题 深基部分题解(python版)-2022.01.29

    P5703 [深基2.例5]苹果采购(python3实现) https://blog.csdn.net/dllglvzhenfeng/article/details/122690555 P5703 [ ...

最新文章

  1. 如何做网络营销推广浅析网站SEO外链发布的技巧分享!
  2. jquery 流程图_使用 JQuery.Flowchart
  3. ITK:将颜色图应用于标签图并将其叠加在图像上
  4. 深入了解DefaultMessageListenerContainer
  5. React 第十章 状态提升
  6. Android开发系列(十二) QQ联系人列表升级版——ListView和ScrollView高阶使用方法...
  7. matlab 人脸识别_MATLAB基于PCALDA模糊神经网络的人脸识别
  8. javascript有关this的那些事(某渣提出的问题)
  9. CSDN重推软件下载频道 软件发布又有新阵地
  10. 谜一样的科学家——阿兰图灵
  11. 三维空间点的直线方程拟合
  12. cinta作业5:循环群
  13. 计算机网络术语总结1
  14. [buuctf][Zer0pts2020]easy strcmp
  15. 如何快速高效的进入新的知识领域
  16. 服务器国产linux操作系统,国产linux操作系统适于做服务器系统的有哪些
  17. 【积水成渊-逐步定制自己的Emacs神器】3:为Emacs安装扩展
  18. matlab 二维空间变换-maketform imtransform 用法
  19. 内存和CPU匹配方法详解
  20. Zip4j 压缩包加密压缩与解压

热门文章

  1. tiny4412搭建linux开发环境,[Tiny4412] 移植 Linux4.4 到 Tiny4412 开发板上
  2. 科研工具整理:论文翻译、流程制图、语法纠错
  3. 俄美共同研制出新型钙钛矿太阳能电池
  4. 学之者生,用之者死——ACE历史与简评
  5. 为屏而生,为屏而死 - IT 精英”们的杯与具
  6. 购买投资性房地产的7项原则
  7. 教你怎么将手机转变成音箱
  8. EBS 11i 中的标准工作流列表
  9. 全志B288驱动移植3-修改tps65185的VCOM
  10. 构千兆楼宇集群 筑物联网+产业基地