public class CharStat {
public static void main(String[] args) {
String src = "A B C D E B C";
src = src.replaceAll("\\s+", ""); // 移除空白
// 1. 逆序字符數組
char[] cs = src.toCharArray();
for (int i = 0, j = cs.length - 1; i < j; i++, j--) {
char tmp = cs[i]; cs[i] = cs[j]; cs[j] = tmp;
}
// 2. 位圖統計 + 去重收集
int[] freq = new int[256]; // ASCII 範圍足夠
List<Character> uniq = new ArrayList<>();
for (char c : cs) {
if (freq[c] == 0) uniq.add(c); // 首次遇見 → 記錄順序
freq[c]++;
}
// 3. 輸出
for (char c : uniq) {
System.out.printf("%c : %d 次%n", c, freq[c]);
}
}
}
C : 2 次 B : 2 次 E : 1 次 D : 1 次 A : 1 次
需求:檢查字符串 a 中是否包含字符串 b 的任意字符。
public static void findCommonChars(String a, String b) {
boolean[] bitmap = new boolean[256];
for (char c : b.toCharArray()) bitmap[c] = true;
for (char c : a.toCharArray()) {
if (bitmap[c]) System.out.println("共同字符: " + c);
}
}
複雜度: O(n+m) 時間,O(1) 空間(固定 256/65536 陣列)。
BitSet 或 int[] 分段位圖