在字符串中找出第一個只出現一次的字符。如 "abaccdeff" → 'b'。利用 ASCII 碼範圍小 (0-255) 建立計數數組,兩遍掃描 O(n)。
int count[256] = {0}count[c]==1 即為答案#include <stdio.h>
char first_unique(char *s) {
int count[256] = {0};
for (int i = 0; s[i]; i++) count[(unsigned char)s[i]]++;
for (int i = 0; s[i]; i++) if (count[(unsigned char)s[i]] == 1) return s[i];
return '\0'; // 無唯一字符
}
int main() {
char s[100];
scanf("%s", s);
char c = first_unique(s);
if (c) printf("首個唯一字符:%c\n", c);
else printf("無唯一字符\n");
return 0;
}
輸入:abaccdeff 統計:a:2, b:1, c:2, d:1, e:1, f:2 掃描:a(2)→b(1) 命中 輸出:b
(unsigned char) 強轉避免負索引 (char 有符號時)int first_unique_idx(char *s) {
int count[256] = {0};
for (int i=0; s[i]; i++) count[(uchar)s[i]]++;
for (int i=0; s[i]; i++) if (count[(uchar)s[i]]==1) return i;
return -1;
}