方法一:哈希+两次遍历
时间复杂度O(2n),空间复杂度O(∣Σ∣)
方法二:延迟删除队列
时间复杂度O(N)+O(∣Σ∣)= O(n),空间复杂度O(∣Σ∣)
class Solution {
public:
unordered_map<char,int> alp;
queue<char> que;
char firstUniqChar(string s) {
int size = s.size();
if(size==0) return ' ';
for(int i = 0;i<size;i++){
if(alp.find(s[i])==alp.end()){
alp[s[i]]=1;
que.push(s[i]);
}else{
alp[s[i]]++;
while(alp[que.front()]!=1&&!que.empty()){
que.pop();
}
}
}
return que.empty()?' ':que.front();
}
};