WenJieWangFlyToWorld

导航

华为机试-字符统计

题目描述

如果统计的个数相同,则按照ASII码由小到大排序输出 。如果有其他字符,则对这些字符不用进行统计。

实现以下接口:
    输入一个字符串,对字符中的各个英文字符,数字,空格进行统计(可反复调用)
    按照统计个数由多到少输出统计结果,如果统计的个数相同,则按照ASII码由小到大排序输出
    清空目前的统计结果,重新统计
调用者会保证:
输入的字符串以‘\0’结尾。

输入描述:

输入一串字符。

输出描述:

对字符中的
各个英文字符(大小写分开统计),数字,空格进行统计,并按照统计个数由多到少输出,如果统计的个数相同,则按照ASII码由小到大排序输出 。如果有其他字符,则对这些字符不用进行统计。

示例1

输入

aadddccddc

输出

dca


  1. import java.util.Scanner;  
  2. import java.util.TreeMap;  
  3.   
  4. /** 
  5.  * 字符统计 
  6.  *  
  7.  * @author LiJian 
  8.  * 
  9.  */  
  10. public class Main {  
  11.   
  12.     public static void main(String[] args) {  
  13.   
  14.         Scanner scanner = new Scanner(System.in);  
  15.         char c;  
  16.         while (scanner.hasNext()) {  
  17.             String s1 = scanner.nextLine();  
  18.             TreeMap<Character, Integer> map = new TreeMap<>();  
  19.             for (int i = 0; i < s1.length(); i++) {  
  20.                 c = s1.charAt(i);  
  21.                 if (c >= '0' && c <= '9' || c >= 'a' && c <= 'z' || c >= 'A' && c <= 'Z' || c == ' ') {  
  22.                     if (!map.containsKey(c)) {  
  23.                         map.put(c, 1);  
  24.                     } else {  
  25.                         map.put(c, map.get(c) + 1);  
  26.                     }  
  27.                 }  
  28.             }  
  29.   
  30.             TreeMap<Integer, Character> map2 = new TreeMap<>();  
  31.             for (char cc : map.keySet()) {  
  32.                 map2.put(map.get(cc) * 128 + 128 - cc, cc);  
  33.             }  
  34.   
  35.             StringBuilder s = new StringBuilder();  
  36.             for (int i : map2.keySet()) {  
  37.                 s.append(map2.get(i));  
  38.             }  
  39.             System.out.println(s.reverse().toString());  
  40.   
  41.         }  
  42.   
  43.     }  
  44.   
  45. }  

posted on 2017-07-03 14:22  WenjieWangFlyToWorld  阅读(307)  评论(0编辑  收藏  举报