笔试题:算字符串中出现最多的字符
有一个字符串,不知道有多少个字符,可能很长,算出出现最多的有哪些字符?public class Test2 {public static void main(String args[]){String str=" ddvdlkd黄黄黄黄 黄 黄fdfd黄d";getmax(str);}public static void getmax(String arryS){HashMap<String ,Integer> map =new HashMap<String ,Integer>(); if(arryS!=null){int arrys=arryS.length();char c;String x=null;for(int i=0;i<arrys;i++){ c=arryS.charAt(i); x=String.valueOf(c);if(!"".equals(x.trim())){if(map!=null&&map.containsKey(x)){ map.put(x, map.get(x)+1 );}else{map.put(x, 1);}}}//得到字符的总数放入map Set<String> set =map.keySet(); TreeSet<Integer> tset=new TreeSet<Integer>(Collections.reverseOrder()); Iterator<String> it=set.iterator(); while(it.hasNext()) { tset.add(map.get(it.next())); //将map中的value放入TreeSet降序, } Integer i=(Integer)tset.first(); //得到第一个value,取出map,value中最大的值 Iterator<String> it2=set.iterator(); String str=null; while(it2.hasNext()) { //再跟map中的value比较,得到key,key就是所求的出现最多的值 str =it2.next(); if(map.get(str).equals(i)){ System.out.println("出现最多的字符 :"+str+", 共出现了" +i+ "次"); } }}}}/*输出结果: * 出现最多的字符 :d, 共出现了7次 出现最多的字符 :黄, 共出现了7次*/
页:
[1]