该题的重点是要找到字符流中第一个出现一次的字符。由于字符流是动态变化的,所以需要一个哈希表来记录字符流中所有字符出现的次数,同时使用队列来维护字符的先后顺序。
代码如下:

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;
};