首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

Java 統計字符出現次數:數組計數器與 HashMap 兩種方案

     編輯:程式設計疑難解答

題目

輸入由 a/b/c/d 組成的字符串,統計各字符出現次數,未出現輸出 0。例:aacdbcc → a2 b1 c3 d1。

方案一:固定數組(最高效)

Scanner sc = new Scanner(System.in);
String s = sc.nextLine();
int[] cnt = new int[4];  // a,b,c,d
for (char ch : s.toCharArray()) {
    if (ch >= 'a' && ch <= 'd') cnt[ch - 'a']++;
}
for (int i = 0; i < 4; i++) {
    System.out.print((char)('a' + i) + "" + cnt[i] + " ");
}

方案二:HashMap(通用、可擴展)

Map map = new HashMap<>();
for (char ch : s.toCharArray()) {
    map.put(ch, map.getOrDefault(ch, 0) + 1);
}
for (char c = 'a'; c <= 'd'; c++) {
    System.out.print(c + "" + map.getOrDefault(c, 0) + " ");
}

對比

維度數組HashMap
時間複雜度O(n)O(n) 平均
空間O(1) 固定O(k) k=不同字符數
適用場景字符集固定小(如 a-z、ASCII)字符集未知或較大
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved