java練習之獲取字串中每個字元出現的次數
阿新 • • 發佈:2018-12-04
練習題:輸入某個字串,獲取該字串中每個字元出現的次數。
思路:字元和次數之間存在對映關係。使用TreeMap集合。
由於操作字元的關係,先將字串轉化為字元陣列。對字元陣列進行遍歷,用每一個鍵作為key去map中查詢。如果該字母鍵不存在,就將該字母作為鍵,值為1儲存到map集合中。如果該字母鍵存在,就將該字母對應的值加1,並將加1後的值儲存到map中,這樣就會覆蓋原來的值,從而記錄字母出現的次數。
程式碼如下:
public class MapTest { public static void main(String[] args) { String str = "udhuchfuefv"; String s = getStringCount(str); System.out.println(s); } public static String getStringCount(String str) { //將字串轉化為字元陣列 char[] ss = str.toCharArray(); //定義map集合 Map<Character,Integer> map = new TreeMap<Character,Integer>(); //遍歷字元陣列 for (int i = 0; i < ss.length; i++) { Integer value = map.get(ss[i]); //使用字元陣列中的 元素作為key,去查詢對應的value if(value == null) {map.put(ss[i], 1); //如果該字元對應的value為0,置1} else {map.put(ss[i], value+1); //如果value值不為空,自加1} } return mapToString(map); } public static String mapToString(Map<Character, Integer> map) { StringBuilder sbu = new StringBuilder(); Set<Character> key = map.keySet(); Iterator it = key.iterator(); while(it.hasNext()) { Character k = (Character)it.next(); Integer value = map.get(k); sbu.append(k+"("+value+")"); } return sbu.toString(); } }