好吧,又成了api调用开发工程师
字符统计
https://www.nowcoder.com/practice/c1f9561de1e240099bdb904765da9ad0
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
/**
* 输入一个只包含小写英文字母和数字的字符串,按照不同字符统计个数由多到少输出统计结果,
* 如果统计的个数相同,则按照ASCII码由小到大排序输出
*/
String string = scanner.next();
char[] charArray = string.toCharArray();
HashMap<Character, Integer> hashMap = new HashMap<>();
for (int i = 0; i < charArray.length; i++) {
char c = charArray[i];
if (hashMap.get(c) == null) {
hashMap.put(c, 1);
} else {
hashMap.put(c, hashMap.get(c) + 1);
}
}
// 创建集合帮助排序
TreeSet<Order> treeSet = new TreeSet<>((o1, o2) -> {
// 包装类的比较用 equals
if (Objects.equals(o1.getCount(), o2.getCount())) {
// 次数相同按照ASCII码进行升序排序
return o1.getC() - o2.getC();
}
// 出现次数倒序排。由大到小
return o2.getCount() - o1.getCount();
});
// 添加到集合中进行排序
for (Map.Entry<Character, Integer> entry : hashMap.entrySet()) {
treeSet.add(new Order(entry.getKey(), entry.getValue()));
}
// 输出
StringBuilder builder = new StringBuilder();
for (Order order : treeSet) {
builder.append(order.getC());
}
System.out.println(builder);
}
}
class Order {
private Character c;
public Integer getCount() {
return count;
}
public Order(Character c, Integer count) {
this.c = c;
this.count = count;
}
public void setCount(Integer count) {
this.count = count;
}
public Character getC() {
return c;
}
public void setC(Character c) {
this.c = c;
}
private Integer count;
}


查看2道真题和解析