給定字符串,找出首個出現次數為 1 的字符。例:「abaccdeff」→ 'b'。
cnt,統計每個 ASCII 字符出現次數cnt[ch]==1 即為答案#include <iostream>
using namespace std;
char firstUniqueChar(const char* str) {
if (!str) return '\0';
int cnt[256] = {0};
for (const char* p = str; *p; ++p) cnt[(unsigned char)*p]++;
for (const char* p = str; *p; ++p)
if (cnt[(unsigned char)*p] == 1) return *p;
return '\0';
}
int main() {
const char* s = "abcddeeff";
cout << firstUniqueChar(s) << endl; // 輸出 b
return 0;
}
unsigned char 避免負索引'\0' 表示無符合條件字符若輸入為 UTF-8 或寬字符,需改用 unordered_map<string,int> 或 unordered_map<wchar_t,int> 統計,邏輯不變。
此題是「哈希統計 + 順序掃描」的標準模式,適用於眾多「第一個滿足條件」類問題。