[LC] 451. Sort Characters By Frequency
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. Solution 1: pq
class Solution {
    public String frequencySort(String s) {
        Map<Character, Integer> map = new HashMap<>();
        for (Character c : s.toCharArray()) {
            map.put(c, map.getOrDefault(c, 0) + 1);
        }
        PriorityQueue<Map.Entry<Character, Integer>> pq = new PriorityQueue<>((a, b) -> b.getValue() - a.getValue());
        pq.addAll(map.entrySet());
        char[] charArr = new char[s.length()];
        int i = 0;
        while (i < charArr.length) {
            Map.Entry<Character, Integer> entry = pq.poll();
            Character cur = entry.getKey();
            Integer times = entry.getValue();
            int j = 0;
            while (j < times) {
                charArr[i + j] = cur;
                j += 1;
            }
            i += times;
        }
        return new String(charArr);
    }
}
Solution 2: bucket sort based on Freqency
class Solution {
    public String frequencySort(String s) {
        Map<Character, Integer> map = new HashMap<>();
        for (Character c : s.toCharArray()) {
            map.put(c, map.getOrDefault(c, 0) + 1);
        }
        // have a freq buckets from 0 to s.length, 0 is unused
        List<Character>[] buckets = new List[s.length() + 1];
        for (char c : map.keySet()) {
            int times = map.get(c);
            if (buckets[times] == null) {
                buckets[times] = new LinkedList<>();
            }
            buckets[times].add(c);
        }
        StringBuilder sb = new StringBuilder();
        for (int i = buckets.length - 1;  i >= 0; i--) {
            if (buckets[i] != null) {
                for (char ch: buckets[i]) {
                    for (int j = 0; j < i; j++) {
                        sb.append(ch);
                    }
                }
            }
        }
        return sb.toString();
    }
}
[LC] 451. Sort Characters By Frequency的更多相关文章
- 【leetcode】451. Sort Characters By Frequency
		
Given a string s, sort it in decreasing order based on the frequency of the characters. The frequenc ...
 - 451. Sort Characters By Frequency将单词中的字母按照从高频到低频的顺序输出
		
[抄题]: Given a string, sort it in decreasing order based on the frequency of characters. Example 1: I ...
 - 451. Sort Characters By Frequency
		
题目: Given a string, sort it in decreasing order based on the frequency of characters. Example 1: Inp ...
 - #Leetcode# 451. Sort Characters By Frequency
		
https://leetcode.com/problems/sort-characters-by-frequency/ Given a string, sort it in decreasing or ...
 - 451. Sort Characters By Frequency (sort map)
		
Given a string, sort it in decreasing order based on the frequency of characters. Example 1: Input: ...
 - LeetCode 451. Sort Characters By Frequency (根据字符出现频率排序)
		
Given a string, sort it in decreasing order based on the frequency of characters. Example 1: Input: ...
 - [LeetCode] 451. Sort Characters By Frequency 根据字符出现频率排序
		
Given a string, sort it in decreasing order based on the frequency of characters. Example 1: Input: ...
 - 451. Sort Characters By Frequency(桶排序)
		
Given a string, sort it in decreasing order based on the frequency of characters. Example 1: Input: ...
 - 【LeetCode】451. Sort Characters By Frequency 解题报告(Python & C++)
		
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 字典 优先级队列 排序 日期 题目地址:https: ...
 
随机推荐
- MessageBox.Show的使用
			
MessageBox.Show("内容","标题") // 摘要:// 使用指定的帮助文件.HelpNavigator 和帮助主题显示一个具有指定文本.标题.按 ...
 - Spring Boot Actuator Endpoints
			
常用内建的Endpoints: beans:显示当前Spring应用上下文的Spring Bean完整列表(包含所有ApplicationContext的层次) conditions:显示当前应用所有 ...
 - pytorch学习问题汇总
			
问题六: 问题五:这里是怎么得到的? 问题四:为什么会是如下结果? torch.bernoulli(a)怎么是这个结果? 问题1:torch各个类型数据格式如何转换?数据类型在官方文档torch.Te ...
 - JS-语句二
			
for循环的4个要素: 1.初始值 2.条件判断 3.状态改变 4.循环体 for循环的写法: for(var i=0;i>10;i++) ...
 - Mac Outlook 2016 无法打开会议室日历
			
问题:Mac Outlook 2016 无法打开会议室日历信息,报错截图如下: 解决方案: Set-MailboxFolderPermission -Identity XXX@xxx.com:\日历 ...
 - 未能加载文件或程序集“MySql.Data”或它的某一个依赖项。找到的程序集清单定义与程序集引用不匹配。 (异常来自 HRESULT:0x80131040)
			
未能加载文件或程序集“MySql.Data”或它的某一个依赖项.找到的程序集清单定义与程序集引用不匹配. (异常来自 HRESULT:0x80131040) 说明: 执行当前 Web 请求期间,出现未 ...
 - textField 基本属性
			
_textField.frame = CGRectMake(0, 0, 200, 50); _textField.delegate = self; _textField.text = str; [_t ...
 - OC中浮点数转整数的进一法和去尾法
			
//去尾法,最小去尾单位为0.000001 floorf(4.1)4 floorf(4.9)4 floorf(4.999999)4 floorf(4.9999999)5 //进一法,最小进位单位为0. ...
 - linux下springboot项目通过jetty发布war包应用
			
Linux下jetty发布jar包 1.通过官网下载jetty点击下载https://repo1.maven.org/maven2/org/eclipse/jetty/jetty-distributi ...
 - Pythia:Facebook最新开源的视觉、语言多任务学习框架
			
Facebook 发布了一个全新的多任务学习框架 Pythia,它基于 PyTorch 且可用于视觉和语言的联合任务.Pythia 是一种模块化的即插即用框架,数据科学家和机器学习开发者能快速构建.复 ...