题解 | #字符统计#
字符统计
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]就是最大的,所有进位什么的都不变,完全不动脑