class Solution
{
public:
  //Insert one char from stringstream
    int ascii[500] = {0};//不想用map,所以把字符转为ascii码,记录次数。其实开个128大小就够了。
    queue<char> str ;
    void Insert(char ch) {
        ascii[(int)ch]++;
        if(str.empty()&&ascii[(int)ch]==1)
            str.push(ch);
        else if(!str.empty()&&ascii[(int)ch]==1)
            str.push(ch);
    }
  //return the first appearence once char in current stringstream
    char FirstAppearingOnce() {
       if(str.empty())
           return '#';
        else if(ascii[(int)str.front()]==1){
            return str.front();
        }
        else{
            while(!str.empty()&&ascii[(int)str.front()]>1){
                str.pop();
            }
            if(str.empty())
               return '#';
            else 
               return str.front();
        }
    }

};

这道题难点在于字符的哈希应用。因为我不想用map,所以把字符转为ascii码。
思路看到次数就要想到哈希,最新就要用queue。一开始想成stack了耽误点时间。