求字符串中重复字数最多的字母及次数

一个字符串可能包含a-z中的多个字符,求出现次数最多的那个字母及次数,如有多个重复的则都求出。


主要难度在于排序以及Map的遍历。  Map.entry()返回一个Set,Set里面的元素是Map.entry 可以进行getkey()和getValue() ;


import java.util.*;
import java.io.*;


public class Main {
public static void main(String[] args) throws IOException{
Scanner in=new Scanner(System.in);  
String str=in.nextLine();
new Main().doString(str);
in.close();
}
public  void doString(String input){
char[] chars=input.toCharArray();
Map<Character,Integer> letter=new HashMap<Character,Integer>();
for(int i=0;i<chars.length;i++){
if(letter.containsKey(chars[i])){
letter.put(chars[i], letter.get(chars[i])+1);
}
else{
letter.put(chars[i], 1);
}
}
List<Map.Entry<Character,Integer>> infolds=new ArrayList<Map.Entry<Character,Integer>>(letter.entrySet());
Collections.sort(infolds,new Comparator<Map.Entry<Character,Integer>>(){
@Override
public int compare(Map.Entry<Character, Integer> o1, Map.Entry<Character, Integer> o2) {
// TODO Auto-generated method stub
return -(o1.getValue()-o2.getValue());
}  
});
int max_cont=infolds.get(0).getValue();
for(Map.Entry<Character, Integer> m:infolds){
if(m.getValue()<max_cont)
break;
System.out.println(m.getKey()+" "+m.getValue()+" times");
}
}
}

你可能感兴趣的:(求字符串中重复字数最多的字母及次数)