我的解题:
使用unordered_map和vector
注意unordered_map和map的区别。
map中的元素是按照二叉搜索树存储的,使用中序遍历可将键值按照从小到大遍历出来。(内部实现了一个红黑树)
unordered_map内部实现了一个哈希表(也叫散列表,通过把关键码值映射到Hash表中一个位置来访问记录,查找的时间复杂度可达到O(1),其在海量数据处理中有着广泛应用)。其元素的排列顺序是无序的。(是无序的,并不是按照插入的顺序。我一开始记错了,以为是按插入的顺序做这道题的,第一个示例过不去。。。找了好久)
PS: 红黑树我现在还不了解,有待学习!学习!
class Solution {
public:
char firstUniqChar(string s) {
if(s.empty()) return ' ';
unordered_map<char,int> m;
vector<char> vec;
for(char c:s){
if(m.count(c)) m[c]++;
else{
vec.push_back(c);
m[c]=1;
}
}
for(int i=0;i<vec.size();i++){
if(m[vec[i]]==1) return vec[i];
}
return ' ';
}
};