劍指Offer編程題--字符流中第一個不重複的字符

題目鏈接:字符流中第一個不重複的字符

題意:

   請實現一個函數用來找出字符流中第一個只出現一次的字符。例如,當從字符流中只讀出前兩個字符"go"時,第一個只出現一次的字符是"g"。當從該字符流中讀出前六個字符“google"時,第一個只出現一次的字符是"l"。如果沒有出現,返回 ‘#’

解題思路:

   插入時將字符的個數記下,然後遍歷字符串一次就可以了

class Solution
{
public:
  //Insert one char from stringstream
    void Insert(char ch){
        s += ch;     // 字符串拼接
        a[ch]++;     // 記錄每個字符出現的次數
    }
  //return the first appearence once char in current stringstream
    char FirstAppearingOnce(){
        int len = s.size();
        for(int i = 0; i < len; i++){ 
            if(a[s[i]] == 1){     // 第一次出現的字符數爲1
                return s[i];      // 返回字符
            }
        }
        return '#';   // 否則返回'#'
    }
private:
    string s;
    int a[26];
};

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章