AcWing 64. 字符流中第一个只出现一次的字符
原题链接
困难
作者:
葱花鸡蛋
,
2020-04-03 01:46:00
,
所有人可见
,
阅读 1922
class Solution{
public:
//记录每个字符出现的个数
map<char, int>buff;
//y总说了:双指针和单调队列有点相似(狗头
queue<int>q;
void insert(char ch){
//如果buff里面的记录的ch个数为1,并且队列不为空,对头头元素的个数大于1
//队列里面可能会空,但是buff里面一直已经存在的字符
if (++ buff[ch] > 1) {
while (q.size() && buff[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();
}
};
(⊙o⊙)