輸入由 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] + " ");
}
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) | 字符集未知或較大 |