一、题目
在字符串 s 中找出第一个只出现一次的字符。如果没有,返回一个单空格。 s 只包含小写字母。
示例 1:
输入:s = “abaccdeff”
输出:‘b’
示例 2:
输入:s = “”
输出:’ ’
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/di-yi-ge-zhi-chu-xian-yi-ci-de-zi-fu-lcof
二、思路
定义一个大小为26的int型数组arr,用来统计每个字符出现的次数,第一次遍历字符串对数组进行赋值,每个字母每出现一次,则该字母对应的元素就加一。第二次遍历字符串只需要找到arr中数组为1的即可,然后返回该字母
三、C语言解法
char firstUniqChar(char* s){
if (*s==NULL) return ' ';
int ans[26] = {0},count=0;
char *p = s;
while(*s){
ans[*s-'a']++;
s++;
count++;
}
for (int i = 0; i < count; ++i) {
if(ans[*p-'a'] == 1) return *p;
p++;
}
return ' ';
}