这道题目思路很简单,遍历,并将s中的字符存在unordered_map中,然后依次匹对其出现次数。若有1,则返回i,否则返回-1
#include <iostream>
#include <unordered_map>
using namespace std;
class Solution {
public:
public:
int firstUniqChar(string s) {
unordered_map<char,int> um;
for(char ch : s)
++um[ch];
for(int i = 0; i < s.size();i++){
if(um[s[i]] == 1)//这里要尤其注意,在存入um中时,并不是按照字符出现的顺序存储的,
//所以字符在um中的顺序是随机的。因此在遍历匹对是,用s[i]来匹对更为合适,如果直接用for(char ch : um),是不对的
return i;
}
return -1;
}
};
int main() {
Solution so;
string s = "leetcode";
cout << so.firstUniqChar(s) << endl;
system("pause");
return 0;
}