LeetCode73|根据字符出现频率排序
时间:2022-07-26
本文章向大家介绍LeetCode73|根据字符出现频率排序,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
1,问题简述
给定一个字符串,请将字符串里的字符按照出现的频率降序排列。
2,示例
输入:
"tree"
输出:
"eert"
解释:
'e'出现两次,'r'和't'都只出现一次。
因此'e'必须出现在'r'和't'之前。此外,"eetr"也是一个有效的答案。
示例 2:
输入:
"cccaaa"
输出:
"cccaaa"
解释:
'c'和'a'都出现三次。此外,"aaaccc"也是有效的答案。
注意"cacaca"是不正确的,因为相同的字母必须放在一起。
示例 3:
输入:
"Aabb"
输出:
"bbAa"
解释:
此外,"bbaA"也是一个有效的答案,但"Aabb"是不正确的。
注意'A'和'a'被认为是两种不同的字符。
3,题解思路
本题采用hashMap进行解决
4,题解程序
import java.util.*;
import java.util.stream.Collectors;
public class FrequencySortTest2 {
public static void main(String[] args) {
String str = "tree";
String frequencySort = frequencySort(str);
System.out.println("frequencySort = " + frequencySort);
}
public static String frequencySort(String s) {
if (s == null || s.length() == 0) {
return s;
}
char[] chars = s.toCharArray();
HashMap<Character, Integer> hashMap = new LinkedHashMap<>(chars.length);
for (Character c : chars) {
hashMap.put(c, hashMap.getOrDefault(c, 0) + 1);
}
List<Map.Entry<Character, Integer>> entryList = hashMap.entrySet().stream().sorted((o1, o2) -> o2.getValue().compareTo(o1.getValue())).collect(Collectors.toList());
StringBuilder stringBuilder = new StringBuilder(entryList.size());
for (Map.Entry<Character, Integer> entry : entryList) {
Integer value = entry.getValue();
while (value > 0) {
stringBuilder.append(entry.getKey());
value--;
}
}
return stringBuilder.toString();
}
}
5,题解程序图片版
6,总结
键值对集合在使用方面确实很多,如果能很好的使用,已经超过了一大部分人了,不会的,赶紧了解一下,,,
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- MongoDB设计方法及技巧
- 我要以血和泪的经历告诉你,这个 bug 太难解决了
- Loki和Fluentd的那点事儿
- 恕我直言你可能真的不会java第9篇-元素的匹配与查找
- 恕我直言你可能真的不会java第8篇-函数式接口
- 突破 DockerHub 限制,全镜像加速服务
- 恕我直言你可能真的不会java第7篇:像使用SQL一样排序集合
- K8S 生态周报| KIND v0.9 发布带来众多更新
- oracle 数据回滚,恢复误删的数据,闪回表功能的使用
- C语言 | 关于结构体内存对齐,看这篇就够了
- Python 图像处理篇-利用opencv库展示本地图片实例演示
- Python 图像处理篇-利用opencv库和numpy库读取包含中文路径下的本地图片实例演示
- 从头创建您自己的vue.js——第2部分(虚拟DOM基础)
- Manage Jenkins报错:"依赖错误: 部分插件由于缺少依赖无法加载...",解决办法
- 从头创建您自己的vuei .js——第3部分(构建VDOM)