题解 | 字符流中第一个不重复的字符
字符流中第一个不重复的字符
https://www.nowcoder.com/practice/00de97733b8e4f97a3fb5c680ee10720?tpId=265&tqId=39269&rp=1&ru=/exam/oj/ta&qru=/exam/oj/ta&sourceUrl=%2Fexam%2Foj%2Fta%3Fpage%3D1%26tpId%3D13%26type%3D265&difficulty=undefined&judgeStatus=undefined&tags=&title=
class Solution { private: string caseout; char candidate; //可依据官方题解将记录顺序的vector化为queue,减少需替换candidate时的遍历次数 //https://blog.nowcoder.net/n/23f5c7b86af64c62b811c2e9ec2cf5b1 vector<char> MyVec; unordered_map<char,int> MyMap; public: Solution(){ caseout=""; candidate='#'; } //Insert one char from stringstream void Insert(char ch) { MyMap[ch]++; MyVec.push_back(ch); if((candidate!='#'&&ch!=candidate)||(candidate=='#'&&MyMap[ch]!=1)){ return; } if(candidate=='#'&&MyMap[ch]==1){ candidate = ch; return; } if(candidate!='#'&&ch==candidate){ for(auto VecCh : MyVec){ if(MyMap[VecCh]==1){ candidate = VecCh; return; } } candidate = '#'; return; } } //return the first appearence once char in current stringstream char FirstAppearingOnce() { //caseout += candidate; //caseout.append(1,candidate); return candidate; } };