1. 程式人生 > >字符流中第一個不重復的字符

字符流中第一個不重復的字符

hash des str 第一個只出現一次的 思路 ngs size first 哈希表

題目描述

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

輸出描述:

如果當前字符流沒有存在出現一次的字符,返回#字符

思路:一個數組記錄下當前字符流,一個哈希表記錄下每個字符出現的次數。插入的時間復雜度是O(1), 查找的時間復雜度是O(n)
 1 class Solution
 2 {
 3 public:
 4     Solution()
 5     {
 6         for
(int idx=0; idx<128; ++idx)hash[idx]=0; 7 } 8 //Insert one char from stringstream 9 void Insert(char ch) 10 { 11 arr.push_back(ch); 12 int idx=ch-\0; 13 ++hash[idx]; 14 } 15 //return the first appearence once char in current stringstream 16 char
FirstAppearingOnce() 17 { 18 for(int i=0; i<arr.size(); ++i) 19 { 20 int idx=arr[i]-\0; 21 if(hash[idx]==1)return arr[i]; 22 } 23 return #; 24 } 25 private: 26 vector<char> arr; 27 int hash[128]; 28 };

字符流中第一個不重復的字符