import java.util.Scanner;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String s = in.nextLine();
int[] counts = new int[128];
for (char c : s.toCharArray()) {
counts[c]++;
}
ArrayList<int[]> list = new ArrayList<>();
for (int i = 0; i < counts.length; i++) {
if (counts[i] > 0) {
list.add(new int[] {i, counts[i]});
}
}
Collections.sort(list, new Comparator<int[]>() {
@Override
public int compare(int[] a, int[] b) {
if (a[1] != b[1]) {
return Integer.compare(b[1], a[1]);
} else {
return Integer.compare(a[0], b[0]);
}
}
});
StringBuilder sb = new StringBuilder();
for (int[] entry : list) {
sb.append((char) entry[0]);
}
System.out.println(sb.toString());
}
}
https://www.nowcoder.com/discuss/727521113110073344
思路:
- 输入处理:使用Scanner读取输入字符串。
- 统计次数:遍历字符串的每个字符,使用数组counts记录每个字符的出现次数。
- 构建列表:将非零次数的字符及其次数存入列表。
- 排序:使用自定义比较器对列表进行排序,首先按次数降序,次数相同则按ASCII码升序。
- 生成结果:将排序后的字符拼接成字符串并输出。



京公网安备 11010502036488号