题目描述

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

输出描述:
如果当前字符流没有存在出现一次的字符,返回#字符。

【思路】可以发现,出现的字符 和 它的出现的次数 是一种对应关系,自然联想到 哈希表key-value 这种对应,或者应用关联容器 map,可以很方便的解决这个问题。map 容器中,它的一个元素 就是一组(key,value)对应的数据

 1 class Solution
 2 {
 3 public:
 4   //Insert one char from stringstream
 5     void Insert(char ch)
 6     {
 7         Vec.push_back(ch);
 8         Map[ch]++;
 9     }
10   //return the first appearence once char in current stringstream
11     char FirstAppearingOnce()
12     {
13         for(vector<char>::iterator iter = Vec.begin();iter != Vec.end();iter ++){
14             if(Map[*iter] == 1)
15                 return *iter;
16         }
17         return '#';
18     }
19     vector<char> Vec;
20     unordered_map<char,int> Map;
21 };

 

相关文章:

  • 2021-09-18
  • 2022-12-23
  • 2021-07-10
  • 2022-12-23
  • 2021-06-20
  • 2022-01-17
  • 2022-01-06
猜你喜欢
  • 2021-12-01
  • 2022-12-23
  • 2022-01-16
  • 2021-10-04
  • 2022-02-19
  • 2022-12-23
  • 2021-11-26
相关资源
相似解决方案