統計一個字符串中第一次出現且頻率最高的字符。java
public static char statMostRateChar(String str) { if (str != null && !"".equals(str)) { int charsStat[] = new int[128]; int charsFirstIdx[] = new int[128]; int strLen = str.length(); for (int ch = 0; ch < 128;ch++) { charsFirstIdx[ch] = strLen; } // 統計字符出現的次數 for (int idx = 0; idx < strLen; idx++) { charsStat[str.charAt(idx)]++; // 記錄字符第一次出現的位置 if (idx < charsFirstIdx[str.charAt(idx)]) { charsFirstIdx[str.charAt(idx)] = idx; } } int mostRateChar = 0; for (int ch = 1; ch < 128; ch++) { if (charsStat[ch] == 0) { continue; } // 找頻率出現最高的字符 if (charsStat[mostRateChar] < charsStat[ch]) { mostRateChar = ch; // 出現頻率同樣時,選擇出如今前面的數 } else if (charsStat[mostRateChar] == charsStat[ch] && charsFirstIdx[mostRateChar] > charsFirstIdx[ch]) { mostRateChar = ch; } } return (char) mostRateChar; } else { return '\0'; } }
:)blog