题目描述 请实现一个函数用来找出字符流中第一个只出现一次的字符。
例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g"。当从该字符流中读出前六个字符“google"时,第一个只出现一次的字符是"l"。
输出描述: 如果当前字符流没有存在出现一次的字符,返回#字符。
思路:
因为字符只能一个接一个从字符流中读出来。可以定义一个数据容器或者string字符串来保存字符在字符流中的位置。
用哈希表计算字符串中每个字符出现的次数。
代码如下:
class Solution { public: //Insert one char from stringstream string str; void Insert(char ch) { str+=ch; } //return the first appearence once char in current stringstream char FirstAppearingOnce() { map<char,int>count;//利用STL中的map或者自己定义一个简单的哈希表char count[256]={0} for(int i=0;i<str.size();i++) count[str[i]]++; for(int j=0;j<str.size();j++) { if(count[str[j]]==1) return str[j]; } return '#'; } };