char firstUniqChar(string s) {
unordered_map <char,int>m;
for(auto c:s){
if(m.find(c)==m.end()){
m.insert(pair<char,int>(c,1));
}else{
m[c]++;
}
}
for(auto c:s){
if(m[c]==1){
return c;
}
}
return NULL;
}
注意几个事情:
①每次调用m[c]查找,若不存在就会自动插入,键名为c,值为0的数据。
②还要map插入可以看成是一个栈,后进的在遍历的时候会被先访问到。
优化过后的代码:
char firstUniqChar(string s) {
unordered_map <char,int>m;
for(auto c:s){
m[c]++;
}
for(auto c:s){
if(m[c]==1){
return c;
}
}
return ' ';
}