题解 | #字符统计#
字符统计
https://www.nowcoder.com/practice/c1f9561de1e240099bdb904765da9ad0
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String str = in.next();
//String str = "aaddccdc";//答案cda
char[] cary = str.toCharArray();
int[] iary = new int[123]; //ascii码最大为z=122
for (char i : cary) {
iary[(int)i]++;//给码值对应的索引累加计数
}
int max = 0;
for (int i : iary) {
if (max < i) {
max = i; //获取最大值
}
}
StringBuilder sb = new StringBuilder();
while (max >
0) { //对数组一次循环只取当前最大值,此时ascii码已按从小到大排着的
for (int i = 0; i < iary.length; i++) {
if (iary[i] == max) {
sb.append((char)i);
}
}
max--;
}
System.out.println(sb);
}
}
网上看到的做法,以空间换复杂度,还行吧,
z是122,所有int[123]就是最大的,所有进位什么的都不变,完全不动脑