最近面試總被面試到,整理出幾種方式(有參考別人的部分)
/** * java一個字符串中出現次數最多的字符以及次數 * @param args */ public static void main(String[] args) { String str = "abccadbcadbc"; //字符串放入map Map<Character,Integer> map = getNumberOfCharacters(str); //若想要打印出出現次數最多的字母以及次數,要將map進行排序 sortMap(map); } /** * 將字符串放進map並將字母作為key值,將出現次數作為value值 * @param str 字符串 */ public static Map<Character,Integer> getNumberOfCharacters(String str){ char [] chars = str.toCharArray(); Map<Character,Integer> map = new HashMap<Character,Integer>(); for(char c:chars){ if(map.containsKey(c)){ map.put(c, map.get(c)+1); }else{ map.put(c, 1); } } //直接輸出字符以及出現的個數 for(Map.Entry<Character,Integer> entry :map.entrySet()){ System.out.println("字符是"+entry.getKey()+"出現的次數是"+entry.getValue()); } return map; } //排序map private static void sortMap(Map<Character, Integer> map) { List<Map.Entry<Character, Integer>> list = new ArrayList<Map.Entry<Character,Integer>>(map.entrySet()); Collections.sort(list,new Comparator<Map.Entry<Character, Integer>>() { //倒序排列 @Override public int compare(Entry<Character, Integer> o1, Entry<Character, Integer> o2) { return o2.getValue().compareTo(o1.getValue()); } }); //打印出現自出的字符以及次數 System.out.println("出現次數最多的字符"+list.get(0).getKey()+"==次數為"+list.get(0).getValue()); }
如有問題,請留言溝通,有更好的方法,請留言交流,謝謝.閱讀全文