LeetCode之根据字符出现频率排序
介绍:给定一个字符串,请将字符串里的字符按照出现的频率降序排列。
示例1:
输入:
"tree"输出:
"eert"解释:
'e'出现两次,'r'和't'都只出现一次。
因此'e'必须出现在'r'和't'之前。此外,"eetr"也是一个有效的答案。
示例2:
输入:
"cccaaa"输出:
"cccaaa"解释:
'c'和'a'都出现三次。此外,"aaaccc"也是有效的答案。
注意"cacaca"是不正确的,因为相同的字母必须放在一起。
示例3:
输入:
"Aabb"输出:
"bbAa"解释:
此外,"bbaA"也是一个有效的答案,但"Aabb"是不正确的。
注意'A'和'a'被认为是两种不同的字符。
实现思路:通过一个字典 dict 存储所有字符出现的次数,因为某个字符的出现次数不可能超过 s 的长度,所以我们将每个字符根据其出现次数放入数组中的对应位置,那么最后我们只要从后往前遍历数组所有位置,将不为空的位置的字符串加入结果 ret 中即可。
C++源代码:
#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
#include <sstream>
#include<map>
#include<set>using namespace std;string frequencySort(string s)
{string res = "";unordered_map<char, int> myMap;vector<pair<char, int>> myVec;//统计所有的字母出现的频次for (int i = 0; i < s.size(); i++){myMap[s[i]]++;}//将字母及频次存入Vector,便于之后的排序for (auto it = myMap.begin(); it != myMap.end(); it++){myVec.push_back(make_pair(it->first, it->second));}//按照字母出现的频次从大到小进行排序sort(myVec.begin(), myVec.end(), [](const pair<char, int>& x, const pair<char, int>& y) -> int {return x.second > y.second; });//将排序后的字母,根据其频次,依次添加对应数量的该字母进入结果字符串中for (auto it = myVec.begin(); it != myVec.end(); it++){for (int i = 0; i < it->second; i++){res += it->first;}}return res;}int main()
{string s = "aaabbc";string result = frequencySort(s);cout <<result<< endl;system("pause");return 0;
}
LeetCode之根据字符出现频率排序相关推荐
- leetcode 451. 根据字符出现频率排序
给定一个字符串,请将字符串里的字符按照出现的频率降序排列. 示例 1:输入: "tree"输出: "eert"解释: 'e'出现两次,'r'和't'都只出现一次 ...
- LeetCode 451 根据字符出现频率排序
题目描述 给定一个字符串,请将字符串里的字符按照出现的频率降序排列. 题解 桶排序 代码 class Solution { public:string frequencySort(string s) ...
- LeetCode 451. 根据字符出现频率排序(Sort Characters By Frequency)
题目描述: 给定一个字符串,请将字符串里的字符按照出现的频率降序排列. 示例 1: 输入: "tree"输出: "eert"解释: 'e'出现两次,'r'和't ...
- Leetcode 451. 根据字符出现频率排序 解题思路及C++实现
解题思路: 先使用unordered_map对字符串s中字符,进行频数统计: 再使用最大堆,对unorder_map进行排序: 接着将排序结果存在结果字符串res中. class Solution { ...
- LeetCode 451. 根据字符出现频率排序(map+优先队列)
1. 题目 给定一个字符串,请将字符串里的字符按照出现的频率降序排列. 输入: "tree"输出: "eert" 2. 优先队列解题 先用map统计字符出现次数 ...
- LeetCode Algorithm 451. 根据字符出现频率排序
451. 根据字符出现频率排序 Ideas Python解法:用个计数器,然后遍历计数器把相应字符乘以出现次数拼接起来就可以了. Code Python from collections import ...
- c++ list排序_LeetCode.451-根据字符出现频率排序
根据字符出现频率排序 力扣leetcode-cn.com 给定一个字符串,请将字符串里的字符按照出现的频率降序排列. 参考了评论区 Felix8bit 的答案 解题思路: 先根据每个词出现的概率进行 ...
- LeetCode中等题之根据字符出现频率排序
题目 给定一个字符串,请将字符串里的字符按照出现的频率降序排列. 示例 1: 输入: "tree" 输出: "eert" 解释: 'e'出现两次,'r'和't' ...
- 根据字符出现频率排序
给定一个字符串,请将字符串里的字符按照出现的频率降序排列. 示例 1: 输入: "tree"输出: "eert"解释: 'e'出现两次,'r'和't'都只出现一 ...
- 451. 根据字符出现频率排序golang
官解 func frequencySort(s string) string {charMap := make(map[rune]int)arr := make([]string, len(s))fo ...
最新文章
- AtCoder Regular Contest 071 D - 井井井 / ###
- selenium实例:unittest框架+PO开发模式
- 关于linux技术的的外文,关于Linux的介绍-外文翻译.doc
- Android 6.0 动态权限申请
- Android之BottomNavigationView实现底部按钮水纹波效果
- LeetCode 第 21 场双周赛(779/1913,前40.7%)
- UE3采用多进程编译Shader
- InstanceBeginEditable dw中特有标识
- 3个阶段 项目征名_中资企业新签的3个海外项目开工
- 虚拟服务器 vmotion,图文并茂:深入了解VMware vMotion过程
- CentOS 7.6 配置VNC远程访问服务器图形界面
- 盲盒商城app开发需要具备哪些核心功能,盲盒商城app源码成品分享
- 基于html制作一个介绍自己家乡的网站,排版整洁,内容丰富,主题鲜明
- MATLAB - 线型、Marker点等属性的设置
- Java输入/输出流(1)
- 如何批量压缩图片大小?教你3个批量压缩图片的方法
- 二维码的使用(java版)
- 划分,全概率公式,贝叶斯公式证明
- 基于android的汽车租赁系统app
- 牛客动态规划习题:Min酱要旅行(背包变种)
热门文章
- ASProtect注册码使用教程|ASProtect SKE(加壳脱壳工具) 2.56 汉化注册版
- 软件开发中的成本意识
- 微信小程序——flex弹性布局水平垂直居中
- 终结者:HTTPS在Tomcat中的使用(三)——Java代码生成密钥库文件及其对应的安全证书
- SQL SERVER数据库 查询sql 多表联查 top命令
- 记一次逆向拿到github token 然后dump掉别人所有库的
- boost noncopyable实现禁止类拷贝
- 3842开关电源完整原理图_开关电源的电路看不懂怎么办?看完本篇就简单了
- springboot2集成hbase2环境搭建
- 初见mybatis-plus(快速创建入门案例)