33:字符统计SumOfCharactors
题目描述:如果统计的个数相同,则按照ASII码由小到大排序输出 。如果有其他字符,则对这些字符不用进行统计。
实现以下接口:
输入一个字符串,对字符中的各个英文字符,数字,空格进行统计(可反复调用)
按照统计个数由多到少输出统计结果,如果统计的个数相同,则按照ASII码由小到大排序输出
清空目前的统计结果,重新统计
调用者会保证:
输入的字符串以‘\0’结尾。
输入描述:输入一串字符。
输出描述:对字符中的各个英文字符(大小写分开统计),数字,空格进行统计,并按照统计个数由多到少输出,如果统计的个数相同,则按照ASII码由小到大排序输出 。如果有其他字符,则对这些字符不用进行统计。
输入例子:
aadddccddc
输出例子:
dca
思路:1:ascii表从0到127,一共128个,一个int[]数组,下表存放字符对应的ascii值,数组值存放该字符出现的次数,
2:用一个max统计当前数组出现次数最多的字符出现的个数
3:用max循环,从大到小输出字符
1 package huawei2; 2 3 import java.util.Collection; 4 import java.util.Collections; 5 import java.util.Iterator; 6 import java.util.LinkedHashMap; 7 import java.util.Map; 8 import java.util.Map.Entry; 9 import java.util.Scanner; 10 11 /*题目描述:如果统计的个数相同,则按照ASII码由小到大排序输出 。如果有其他字符,则对这些字符不用进行统计。 12 实现以下接口: 13 输入一个字符串,对字符中的各个英文字符,数字,空格进行统计(可反复调用) 14 按照统计个数由多到少输出统计结果,如果统计的个数相同,则按照ASII码由小到大排序输出 15 清空目前的统计结果,重新统计 16 调用者会保证: 17 输入的字符串以‘\0’结尾。 18 输入描述:输入一串字符。 19 输出描述:对字符中的各个英文字符(大小写分开统计),数字,空格进行统计,并按照统计个数由多到少输出,如果统计的个数相同,则按照ASII码由小到大排序输出 。如果有其他字符,则对这些字符不用进行统计。 20 输入例子: 21 aadddccddc 22 输出例子: 23 dca*/ 24 public class SumOfCharactors { 25 26 public static void main(String[] args) { 27 Scanner in = new Scanner(System.in); 28 while(in.hasNext()) 29 { 30 String input = in.nextLine(); 31 int array[] = new int[128]; 32 //初始化存放ascii码的数组,下表ascii,value出现的次数 33 for(int i = 0;i<array.length;i++ ) 34 { 35 array[i] = 0; 36 } 37 //统计各个字符(转换成ascii出现的次数) 38 for(int j = 0; j<input.length(); j++) 39 { 40 array[input.charAt(j)]++; 41 //array[(int)input.charAt(j)]++; 42 } 43 int max = 0;//max表示数组中当前出现次数最多元素的次数 44 //寻找出现次数最多元素的个数 45 for(int j = 0; j< array.length;j++) 46 { 47 if(array[j] > max) 48 { 49 max = array[j]; 50 } 51 } 52 //按照出现次数依次输出 53 while(max!=0) 54 { 55 for(int i = 0; i<array.length; i++) 56 { 57 if(max == array[i]) 58 System.out.print((char)i); 59 } 60 max--; 61 } 62 //char[] array = input.toCharArray(); 63 //Map<Character, Integer> map = new LinkedHashMap<>(); 64 // Iterator<Entry<Character, Integer>> iterator = map.entrySet().iterator(); 65 // while(iterator.hasNext()){} 66 67 68 } 69 } 70 71 } 72 /*测试用例: 73 8v26ktzk069lm400061m0v965we88850o6omqi532ktir6esb55t0kqm026y8rk63aj82kcx48gd1tiylvs0xo32zem65q7z5ce2185d2ascz62a2p3ajr45h637t2p290lc043gicp5ldzzmx2 74 对应输出应该为: 75 206583kmzct4aeil19dopqrsvx7gjybhw 76 你的输出为: 77 206583kmzct4aeil19dopqrsvx7gjybhw0751462839jcybodpnwxzikmfehluagtqrsv*/
可能循环处理输出出错,输出容器没有清理干净