博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【Leetcode刷题篇】leetcode451根据字符出现频率排序
阅读量:1886 次
发布时间:2019-04-26

本文共 776 字,大约阅读时间需要 2 分钟。

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

示例 1:

输入:
“tree”
输出:
“eert”
解释:
'e’出现两次,'r’和’t’都只出现一次。
因此’e’必须出现在’r’和’t’之前。此外,"eetr"也是一个有效的答案。

示例 2:

输入:
“cccaaa”
输出:
“cccaaa”
解释:
'c’和’a’都出现三次。此外,"aaaccc"也是有效的答案。
注意"cacaca"是不正确的,因为相同的字母必须放在一起。

示例 3:

输入:
“Aabb”
输出:
“bbAa”
解释:
此外,"bbaA"也是一个有效的答案,但"Aabb"是不正确的。
注意’A’和’a’被认为是两种不同的字符。

思路:用优先级队列来存储字母,根据字母出现的频率来存储

public String frequencySort(String s) {
StringBuilder res = new StringBuilder(); // 存储字符串的频率次数 int[] letters = new int[128]; for(char c:s.toCharArray()) {
letters[c]++; } // 构建优先级队列 PriorityQueue
queue = new PriorityQueue
(128,(a,b)->Integer.compare(letters[b],letters[a])); // 字母放进优先级队列 通过频率 for(int i=0;i
0) {
res.append(c); } } return res.toString(); } }

转载地址:http://ewwdf.baihongyu.com/

你可能感兴趣的文章
必须了解的mysql三大日志-binlog、redo log和undo log
查看>>
Uniform Grid Quadtree kd树 Bounding Volume Hierarchy R树 搜索
查看>>
局部敏感哈希Locality Sensitive Hashing归总
查看>>
图像检索中为什么仍用BOW和LSH
查看>>
图˙谱˙马尔可夫过程˙聚类结构----by林达华
查看>>
深度学习读书笔记之AE(自动编码AutoEncoder)
查看>>
深度学习读书笔记之RBM
查看>>
深度学习word2vec笔记之基础篇
查看>>
法国INRIA Data Sets & Images 数据集和图像库
查看>>
训练自己haar-like特征分类器并识别物体(1)
查看>>
Github系列之二:开源 一行代码实现多形式多动画的推送小红点WZLBadge(iOS)
查看>>
iOS容易造成循环引用的三种场景,就在你我身边!
查看>>
有一个会做饭的女友是一种怎样的体验?
查看>>
Storm入门之第一章
查看>>
java提高篇之数组(1):认识JAVA数组
查看>>
java提高篇之数组(2)
查看>>
浅析数据一致性
查看>>
Java 多维数组遍历
查看>>
深入分析Java中的length和length()
查看>>
数据库连接池浅析
查看>>