字符流中第一個重複的字符

題目描述

請實現一個函數用來找出字符流中第一個只出現一次的字符。例如,當從字符流中只讀出前兩個字符"go"時,第一個只出現一次的字符是"g"。當從該字符流中讀出前六個字符「google"時,第一個只出現一次的字符是"l"。

輸出描述:

若是當前字符流沒有存在出現一次的字符,返回#字符。


提交連接:點擊


思路:
  因爲是統計字符及字符出現的次數,所以想到了key-value。構建一個hash表,key爲字符,value爲出現的次數。時間複雜度O(n),空間複雜度O(n)

代碼:
class Solution
{
public:
  //Insert one char from stringstream
    string s;
    char str[256]={0};
    void Insert(char ch)
    {
         s+=ch;
         str[ch]++;
    }
  //return the first appearence once char in current stringstream
    char FirstAppearingOnce()
    {
        int size=s.length();
        for(int i=0;i<size;i++){
            if(str[s[i]]==1){  //遍歷出現第一次的字符
                return s[i];
            }
        }
        return '#';
    }
};
相關文章
相關標籤/搜索