题目描述
思路分析
队列/双指针+哈希表
发现答案出现的字母只可能从左往右,具有单调性,因此可以用哈希表+双指针。本题的双指针也可以用队列实现。因为队列本质上是个双指针。
代码实现
class Solution
{
public:
//Insert one char from stringstream
unordered_map<char,int> hash;
queue<char> q;
void Insert(char ch) {
if(++hash[ch]>1){
while(q.size()&&hash[q.front()]>1) q.pop();
}
else q.push(ch);
}
//return the first appearence once char in current stringstream
char FirstAppearingOnce() {
if(q.empty())return '#';
else return q.front();
}
};