第一個只出現一次的字符位置和字符流中第一個不重複的字符

第一個只出現一次的字符位置:

在一個字符串(1<=字符串長度<=10000,全部由字母組成)中找到第一個只出現一次的字符,並返回它的位置

用哈希表,遍歷兩次,第一次統計個數,第二次判斷第一個只出現一次的

代碼:

class Solution {
public:
    int FirstNotRepeatingChar(string str) {
        map<char,int> tab;
        for(int i=0;i<str.size();++i)
            tab[str[i]]++;
        for(int i=0;i<str.size();++i){
            if(tab[str[i]]==1)
                return i;
        }
        return -1;
    }
};


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

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

用一樣的思路;

class Solution
{
public:
  //Insert one char from stringstream
    void Insert(char ch)
    {
        s+=ch;
        tab[ch]++;
    }
  //return the first appearence once char in current stringstream
    char FirstAppearingOnce()
    {
        for(int i=0;i<s.size();i++){
            if(tab[s[i]]==1)
                return s[i];
        }
        return '#';
    }
 private:
    string s;
    map<char,int> tab;
};



發佈了133 篇原創文章 · 獲贊 23 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章