直接用一个长度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];
}
}
};
本文介绍了一种高效的方法来查找给定字符串中的第一个不重复的字符,通过使用数组、map和vector等数据结构实现算法,并提供了两种实现方案。
347

被折叠的 条评论
为什么被折叠?



