思路:
搞一个hash表,统计一下每个字母出现多少次,然后再从前先后扫描一遍,
扫描到第一个只出现一次的字母,把这个字母返回就可以了。
C++里面的hash表:unordered_map<>
class Solution { public: char firstNotRepeatingChar(string s) { char res = '#'; if(!s.size()) return res; unordered_map<char, int> mmp; for(int i = 0; i < s.size(); i++) { mmp[s[i]] += 1; } for(int i = 0; i < s.size(); i++){ if(mmp[s[i]] == 1) return s[i]; } return res; } };
另一种写法:
class Solution { public: char firstNotRepeatingChar(string s) { unordered_map<char,int> count; for(auto c:s) count[c]++; char res='#'; for(auto c:s){ if(count[c] == 1) { res = c; break; } } return res; } };