该题的重点是要找到字符流中第一个出现一次的字符。由于字符流是动态变化的,所以需要一个哈希表来记录字符流中所有字符出现的次数,同时使用队列来维护字符的先后顺序。
代码如下:
class Solution { public: //Insert one char from stringstream void Insert(char ch) { stream.push(ch); char_count[ch]++; } //return the first appearence once char in current stringstream char FirstAppearingOnce() { while (!stream.empty() && char_count[stream.front()] != 1) { stream.pop(); } return stream.empty()? '#' : stream.front(); } private: queue<char> stream; map<char, int> char_count; };