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

Java 統計字母出現次數:轉小寫判斷在連續 ASCII 碼下屬多餘

     編輯:程式設計疑難解答

原始代碼片段

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;

分析

  • ASCII 碼中 '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 連續特性直接範圍判斷即可,無需額外轉換比較。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved