Google面试题-第一个只出现一次的字符

给定数组,求出数组中第一个只出现一次的数字

题目:在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b。
需要注意的是,这道题目求得是只出现一次第一个字符。
显然要用hash来统计字符出现的次数,在遍历一遍数组来找到只出现一次的第一个字符。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include <iostream>
#include <string>

using namespace std;

char findFirstNotRepeatedChar(string &s){
if(s.size() == 0)
return 0; //空串

int hashList[256];
for(size_t i= 0; i < 256; i++)
hashList[i] = 0;

for(size_t i= 0; i < s.size(); i++){
hashList[ s[i] ] ++;
}

for(size_t i = 0; i < s.size(); i++){
if(hashList[ s[i] ] == 1)
return s[i];
}

return 0; //没找到
}

int main(){
string str = "aadfaszdfasdgfhgfghsdlkjlkjsdfjaoriueoirum";

cout<<findFirstNotRepeatedChar(str)<<endl;

return 0;
}