if(!(chs[i]>='a' && chs[i]<='z' || chs[i]>='A' && chs[i]<='Z'))
if(!(Character.toLowerCase(chs[i])>='a' && Character.toLowerCase(chs[i])<'z'))
continue;
'A'~'Z' (65~90)、'a'~'z' (97~122) 均為連續區間。if 已完整過濾非字母字元,第二個轉小寫判斷邏輯多餘(且條件寫法有誤:< 'z' 漏掉 'z')。char c = chs[i];
if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')) {
// 是字母,統計
char key = Character.toLowerCase(c); // 統一小寫作為 Map key
map.merge(key, 1, Integer::sum);
}
利用 ASCII 連續特性直接範圍判斷即可,無需額外轉換比較。