直接图方便了,来一个string和一个map,每次insert就加在s后面,并记录该字符出现次数。在first函数中,遍历该字符,找到第一个出现一次的返回即可。
这样确实快,防御式突击肯定没这么快
class Solution
{
public:
//Insert one char from stringstream
void Insert(char ch)
{
s += ch;
ma[ch]++;
}
//return the first appearence once char in current stringstream
char FirstAppearingOnce()
{
for(int i = 0; i < s.length(); ++i){
if(ma[s[i]] == 1) return s[i];
}
return '#';
}
private:
string s;
map<char,int> ma;
};