統計一個字符串中出現次數最多的字符,並統計次數


最近同事出去面試,回來問我一道筆試題(統計一個字符串中出現次數最多的字符,並統計次數)

大家看到這個題目,應該立刻想到,這道題是對java集合運用的考察。我的解答如下代碼所示:

          String str = "aaaaaaaaabbbbbbbbbbbbbbbbbbbbbcccddddddddeffg";
		char[] charArray = str.toCharArray();
		Map<Character,Integer> map = new HashMap<Character,Integer>();
		for(char c : charArray){
			if(map.containsKey(c)){
				map.put(c, map.get(c)+1);
			}else{
				map.put(c, 1);
			}
		}
		
		Set<Entry<Character, Integer>> entrySet = map.entrySet();
		Comparator<Entry<Character, Integer>> cr = new Comparator<Map.Entry<Character,Integer>>() {
			@Override
			public int compare(Entry<Character, Integer> o1, Entry<Character, Integer> o2) {
				if(o1.getValue() > o2.getValue()){
					return 1;
				}else if(o1.getValue() == o2.getValue()){
					return 0;
				}else{
					return -1;
				}
			}
		};
		List<Entry<Character, Integer>> list = new ArrayList<Entry<Character, Integer>>(entrySet);
		Collections.sort(list, cr);
		Entry<Character, Integer> e = list.get(list.size()-1);
		System.out.println("出現次數最多的字符:::"+e.getKey());
		System.out.println("出現次數:::"+e.getValue());

  

結果如下:

符合我們的預期,這只是我想到的一種方法,也許還有其他更好的方法

 

總結:

  雖然只有幾十行的代碼,但是涉及到的知識點還真不少:

  1.map集合的運用

  2.java.util.Comparator接口的運用(自定義排序規則)

  3.set 轉list

  4.Collections.sort排序

 

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM