题意:
        请实现一个函数用来找出字符流中第一个只出现一次的字符。
        例如,当从字符流中只读出前两个字符 "go" 时,第一个只出现一次的字符是 "g" 。
        当从该字符流中读出前六个字符 “google" 时,第一个只出现一次的字符是"l"。


方法一:
字符串+哈希表

思路:
        对输入的字符串计数并用字符串存储。
        寻找字符串中的第一个出现的数量为1的字符。

        

class Solution
{
public:
    string s;
    unordered_map<char,int> mp;//哈希表用做计数数组
    void Insert(char ch) {
        mp[ch]++;//计数
        s+=ch;
    }

    char FirstAppearingOnce() {
        int len=s.size();
        for(int i=0;i<len;i++){//遍历
            if(mp[s[i]]==1){//寻找数量为1的第一个字符
                return s[i];
            }
        }
        return '#';
    }

};

时间复杂度:
空间复杂度:


方法二:
队列+哈希表

思路:
        思路同方法一相同。
        但利用队列代替字符串,可以减少重复。(即省去了前面不满足条件的字符(条件:第一个数量为1的字符))。

class Solution
{
public:
    queue<char> q;//队列
    unordered_map<char,int> mp;//哈希表用做计数数组
    void Insert(char ch) {
        mp[ch]++;//计数
        q.push(ch);//入队
    }

    char FirstAppearingOnce() {
        
        while(!q.empty()){
            if(mp[q.front()]==1){//寻找第一个数量为1的字符
                return q.front();
            }else{
                q.pop();
            }
        }
        return '#';
    }

};

时间复杂度:
空间复杂度: