题目:

Given a string, sort it in decreasing order based on the frequency of characters.

Example 1:

Input:
"tree" Output:
"eert" Explanation:
'e' appears twice while 'r' and 't' both appear once.
So 'e' must appear before both 'r' and 't'. Therefore "eetr" is also a valid answer.

Example 2:

Input:
"cccaaa" Output:
"cccaaa" Explanation:
Both 'c' and 'a' appear three times, so "aaaccc" is also a valid answer.
Note that "cacaca" is incorrect, as the same characters must be together.

Example 3:

Input:
"Aabb" Output:
"bbAa" Explanation:
"bbaA" is also a valid answer, but "Aabb" is incorrect.
Note that 'A' and 'a' are treated as two different characters.

分析:

给定一个字符串,请将字符串里的字符按照出现的频率降序排列。

基本思路就是遍历一遍字符串,将字符出现的次数存进Hashmap中,再遍历一遍Hashmap将字符和出现次数作为一组pair存进优先级队列中,再从队列中依次取出数据拼接成最后的字符串。

程序:

C++

class Solution {
public:
string frequencySort(string s) {
unordered_map<char, int> m;
for(const auto& c:s)
m[c]++;
priority_queue <pair<char, int>, vector<pair<char, int>>, cmp >q;
for(const auto& i:m){
q.push(make_pair(i.first, i.second));
}
string res = "";
while(!q.empty()){
res.append(q.top().second, q.top().first);
q.pop();
}
return res;
}
private:
struct cmp{
bool operator() (pair<char, int> a, pair<char, int> b)
{
return a.second < b.second;
}
};
};

Java

class Solution {
public String frequencySort(String s) {
for(char c:s.toCharArray()){
map.put(c, map.getOrDefault(c,0) + 1);
}
p.addAll(map.entrySet());
while(!p.isEmpty()){
Map.Entry<Character, Integer> e = p.poll();
for(int i = 0; i < e.getValue().intValue(); i++){
res.append(e.getKey());
}
}
return res.toString();
}
private StringBuilder res = new StringBuilder();
private HashMap<Character, Integer> map = new HashMap<>();
private PriorityQueue<Map.Entry<Character, Integer>> p = new PriorityQueue<>(new Comparator<Map.Entry<Character, Integer>>()
{
public int compare(Map.Entry<Character, Integer> a, Map.Entry<Character, Integer> b)
{
return b.getValue() - a.getValue();
}
});
}

LeetCode 451. Sort Characters By Frequency 根据字符出现频率排序 (C++/Java)的更多相关文章

  1. [LeetCode] 451. Sort Characters By Frequency 根据字符出现频率排序

    Given a string, sort it in decreasing order based on the frequency of characters. Example 1: Input: ...

  2. 451 Sort Characters By Frequency 根据字符出现频率排序

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

  3. [LeetCode] Sort Characters By Frequency 根据字符出现频率排序

    Given a string, sort it in decreasing order based on the frequency of characters. Example 1: Input: ...

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

    Given a string, sort it in decreasing order based on the frequency of characters. Example 1: Input: ...

  5. #Leetcode# 451. Sort Characters By Frequency

    https://leetcode.com/problems/sort-characters-by-frequency/ Given a string, sort it in decreasing or ...

  6. 【leetcode】451. Sort Characters By Frequency

    Given a string s, sort it in decreasing order based on the frequency of the characters. The frequenc ...

  7. 【LeetCode】451. Sort Characters By Frequency 解题报告(Python & C++)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 字典 优先级队列 排序 日期 题目地址:https: ...

  8. 451. Sort Characters By Frequency

    题目: Given a string, sort it in decreasing order based on the frequency of characters. Example 1: Inp ...

  9. 451. Sort Characters By Frequency将单词中的字母按照从高频到低频的顺序输出

    [抄题]: Given a string, sort it in decreasing order based on the frequency of characters. Example 1: I ...

  10. 451. Sort Characters By Frequency (sort map)

    Given a string, sort it in decreasing order based on the frequency of characters. Example 1: Input: ...

随机推荐

  1. 打CS2的时候提示 error:unrec stream cmd 2090 82a

    打CS2的时候提示 error:unrec stream cmd 2090 82a 打着打着就卡住,然后提示error:unrec stream cmd 2090 82a 找了一圈,进bios把内存条 ...

  2. RocketMQ 之 IoT 消息解析:物联网需要什么样的消息技术?

    前言: 从初代开源消息队列崛起,到 PC 互联网.移动互联网爆发式发展,再到如今 IoT.云计算.云原生引领了新的技术趋势,消息中间件的发展已经走过了 30 多个年头. 目前,消息中间件在国内许多行业 ...

  3. 关于Kubernetes规划的灵魂n问

    Kubernetes已经成为企业新一代云IT架构的重要基础设施,但是在企业部署和运维Kubernetes集群的过程中,依然充满了复杂性和困扰.阿里云容器服务自从2015年上线后,一路伴随客户和社区的成 ...

  4. 深入解读 Flink SQL 1.13

    简介: Apache Flink 社区 5 月 22 日北京站 Meetup 分享内容整理,深入解读 Flink SQL 1.13 中 5 个 FLIP 的实用更新和重要改进. 本文由社区志愿者陈政羽 ...

  5. Spark 大数据处理最佳实践

    开源大数据社区 & 阿里云 EMR 系列直播 第十一期 主题:Spark 大数据处理最佳实践 讲师:简锋,阿里云 EMR 数据开发平台 负责人 内容框架: 大数据概览 如何摆脱技术小白 Spa ...

  6. 阿里云容器服务全面升级为 ACK Anywhere,让云的边界拓展至企业需要的每个场景

    ​简介: 2021 年 9 月 26 日上海阿里云计算峰会上,阿里巴巴研究员.阿里云云原生应用平台负责人丁宇宣布,阿里云容器服务全面升级为 ACK Anywhere,让企业在任何需要云的地方,都能获得 ...

  7. Total Commander 使用 mklink 建立文件夹链接 将 C 盘文件迁移到其他盘

    在安装完成了 100000000 个软件之后,我 1T 的 C 盘的空间终于不足了,由于安装了大量的特别挑的不专业的软件,强行放在其他的盘将水土不服.于是在老师傅的指导下,我采用了 mklink 神奇 ...

  8. React项目中报错:Parsing error: The keyword 'import' is reservedeslint

    记得更改完配置后,要重启编辑器(如:VSCode)!!! 记得更改完配置后,要重启编辑器(如:VSCode)!!! 记得更改完配置后,要重启编辑器(如:VSCode)!!! 这个错误通常发生在你尝试在 ...

  9. LVGL学习资料

    一.资料整理 官网:https://lvgl.io/ 使用手册: 官方的使用手册是英文版的,百问网将其翻译成中文版的文档.地址如下: 官方使用文档:https://docs.lvgl.io/maste ...

  10. 检索增强生成(RAG)实践:基于LlamaIndex和Qwen1.5搭建智能问答系统

    检索增强生成(RAG)实践:基于LlamaIndex和Qwen1.5搭建智能问答系统 什么是 RAG LLM 会产生误导性的 "幻觉",依赖的信息可能过时,处理特定知识时效率不高, ...