2022-1-29 Leetcode 451.根据字符出现的频率排序
学会了优先队列对我来说最强大的一点是,可以使用 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.根据字符出现的频率排序相关推荐
- Leetcode 451. 根据字符出现频率排序 解题思路及C++实现
解题思路: 先使用unordered_map对字符串s中字符,进行频数统计: 再使用最大堆,对unorder_map进行排序: 接着将排序结果存在结果字符串res中. class Solution { ...
- leetcode 451. 根据字符出现频率排序
给定一个字符串,请将字符串里的字符按照出现的频率降序排列. 示例 1:输入: "tree"输出: "eert"解释: 'e'出现两次,'r'和't'都只出现一次 ...
- LeetCode 451. 根据字符出现频率排序(map+优先队列)
1. 题目 给定一个字符串,请将字符串里的字符按照出现的频率降序排列. 输入: "tree"输出: "eert" 2. 优先队列解题 先用map统计字符出现次数 ...
- LeetCode 451 根据字符出现频率排序
题目描述 给定一个字符串,请将字符串里的字符按照出现的频率降序排列. 题解 桶排序 代码 class Solution { public:string frequencySort(string s) ...
- LeetCode 451. 根据字符出现频率排序(Sort Characters By Frequency)
题目描述: 给定一个字符串,请将字符串里的字符按照出现的频率降序排列. 示例 1: 输入: "tree"输出: "eert"解释: 'e'出现两次,'r'和't ...
- LeetCode Algorithm 451. 根据字符出现频率排序
451. 根据字符出现频率排序 Ideas Python解法:用个计数器,然后遍历计数器把相应字符乘以出现次数拼接起来就可以了. Code Python from collections import ...
- 2022.09.29 周四
2022.09.29 周四 回顾 元组 容器:(数据1,数据2,数据3,--) 不可变的:有序的 元素:没有要求 集合 容器:{数据1,数据2,数据3,--} 可变的:无序的: 元素:不可变的数据:唯 ...
- LeetCode中等题之根据字符出现频率排序
题目 给定一个字符串,请将字符串里的字符按照出现的频率降序排列. 示例 1: 输入: "tree" 输出: "eert" 解释: 'e'出现两次,'r'和't' ...
- 洛谷 刷题 深基部分题解(python版)-2022.01.29
P5703 [深基2.例5]苹果采购(python3实现) https://blog.csdn.net/dllglvzhenfeng/article/details/122690555 P5703 [ ...
最新文章
- 如何做网络营销推广浅析网站SEO外链发布的技巧分享!
- jquery 流程图_使用 JQuery.Flowchart
- ITK:将颜色图应用于标签图并将其叠加在图像上
- 深入了解DefaultMessageListenerContainer
- React 第十章 状态提升
- Android开发系列(十二) QQ联系人列表升级版——ListView和ScrollView高阶使用方法...
- matlab 人脸识别_MATLAB基于PCALDA模糊神经网络的人脸识别
- javascript有关this的那些事(某渣提出的问题)
- CSDN重推软件下载频道 软件发布又有新阵地
- 谜一样的科学家——阿兰图灵
- 三维空间点的直线方程拟合
- cinta作业5:循环群
- 计算机网络术语总结1
- [buuctf][Zer0pts2020]easy strcmp
- 如何快速高效的进入新的知识领域
- 服务器国产linux操作系统,国产linux操作系统适于做服务器系统的有哪些
- 【积水成渊-逐步定制自己的Emacs神器】3:为Emacs安装扩展
- matlab 二维空间变换-maketform imtransform 用法
- 内存和CPU匹配方法详解
- Zip4j 压缩包加密压缩与解压