题解 | #字符统计#
字符统计
https://www.nowcoder.com/practice/c1f9561de1e240099bdb904765da9ad0
这道题比较重要, 所以做一下笔记 题目的要求就是从大到小的稳定排序 所以定一个二维数组, 第一列表示各个字符的下标, 第二列表示各个字符的个数 然后调用arrays.sort()方法实现稳定排序 import java.util.Scanner; import java.util.*; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); // 注意 hasNext 和 hasNextLine 的区别 while (in.hasNext()) { // 注意 while 处理多个 case String str = in.nextLine(); int [][]arr = new int[36][2]; for (int i = 0; i < 36; i++) { arr[i][0] = i; arr[i][1] = 0; } for (int i = 0; i < str.length() ; i++) { char ch = str.charAt(i); if(Character.isLetter(ch)) { int index = ch - 'a'+10; arr[index][1]++; } else { int index = ch - '0'; arr[index][1]++; } } Arrays.sort(arr, new Comparator<int[]>() { @Override public int compare(int[] o1, int[] o2) { return o2[1] - o1[1]; } }); for (int i = 0; i < 36; i++) { if(arr[i][1] != 0) { int index = arr[i][0]; if( index <10 ) { int k = arr[i][0] +'0'; char ch = (char) ( k) ; System.out.print(ch); } else { int k = arr[i][0] +'a'-10; char ch = (char) ( k) ; System.out.print(ch); } } } } } }
华为机试题解 文章被收录于专栏
华为机试题解