hash存储
unordered_map<,>用法
#include <iostream>
#include <unordered_map>
using namespace std;
int main()
{
string key="123";
int value=4;
unordered_map<string, int> unomap;//创建一个key为string类型, value为int类型的unordered_map
unomap.emplace(key, value);//使用变量方式,插入一个元素
unomap.emplace("456", 7);//也可以直接写上key和value的值
cout<<unomap["123"];//通过key值来访问value
cout<<endl;
for(auto x:unomap)//遍历整个map,输出key及其对应的value值
cout<<x.first<<" "<<x.second<<endl;
for(auto x:unomap)//遍历整个map,并根据其key值,查看对应的value值
cout<<unomap[x.first]<<endl;
}
思路
只需要找到不重复的元素,因此除了不重复元素其余元素都是大于1,因此首先想到的是用数组来做hash,但是这样会导致太多的空间浪费,因此考虑用unordered_map。
代码
class Solution {
public:
int firstUniqChar(string s) {
unordered_map<int,int> hash;
for(char c:s){
++hash[c];
}
for(int i=0;i<s.size();++i){
if(hash[s[i]]==1){
return i;
}
}
return -1;
}
};