字符流中第一个不重复的字符

请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符 "go" 时,第一个只出现一次的字符是 "g"。当从该字符流中读出前六个字符“google" 时,第一个只出现一次的字符是 "l"。

 

C++:

 1 class Solution
 2 {
 3 private:
 4     int cnt[256] = {0} ;
 5     queue<char> q ;
 6 public:
 7   //Insert one char from stringstream
 8     void Insert(char ch)
 9     {
10         cnt[ch]++ ;
11         q.push(ch) ;
12         while(!q.empty() && cnt[q.front()] > 1)
13             q.pop() ;
14         
15     }
16   //return the first appearence once char in current stringstream
17     char FirstAppearingOnce()
18     {
19          if (q.empty()){
20              return '#' ;
21          }else{
22              return q.front() ;
23          }
24     }
25 
26 };

 

posted @ 2019-03-27 17:16  __Meng  阅读(301)  评论(0编辑  收藏  举报