直接用一个长度256的数组就可以(因为ASCII码一共256个),当然也可以用set和map。
数组的版本:
class Solution {
public:
/**
* @param str: str: the given string
* @return: char: the first unique character in a given string
*/
char firstUniqChar(string &str) {
vector<int> hm(256, 0);
int strSize = str.size();
for (int i = 0; i < strSize; ++i) {
hm[str[i]-'0']++;
}
for (int i = 0; i < strSize; ++i) {
if (hm[str[i]-'0'] == 1) return str[i];
}
}
};
map的版本:
class Solution {
public:
/**
* @param str: str: the given string
* @return: char: the first unique character in a given string
*/
char firstUniqChar(string &str) {
map<char, int> hashmap; //<char, count>
int strSize = str.size();
for (int i = 0; i < strSize; ++i) {
if (hashmap.find(str[i]) == hashmap.end()) {
hashmap[str[i]] = 1;
} else {
hashmap[str[i]]++;
}
}
for (int i = 0; i < strSize; ++i) {
if (hashmap[str[i]] == 1) return str[i];
}
}
};