class Solution
{
public:
//Insert one char from stringstream
int ascii[500] = {0};//不想用map,所以把字符转为ascii码,记录次数。其实开个128大小就够了。
queue<char> str ;
void Insert(char ch) {
ascii[(int)ch]++;
if(str.empty()&&ascii[(int)ch]==1)
str.push(ch);
else if(!str.empty()&&ascii[(int)ch]==1)
str.push(ch);
}
//return the first appearence once char in current stringstream
char FirstAppearingOnce() {
if(str.empty())
return '#';
else if(ascii[(int)str.front()]==1){
return str.front();
}
else{
while(!str.empty()&&ascii[(int)str.front()]>1){
str.pop();
}
if(str.empty())
return '#';
else
return str.front();
}
}
}; 这道题难点在于字符的哈希应用。因为我不想用map,所以把字符转为ascii码。
思路看到次数就要想到哈希,最新就要用queue。一开始想成stack了耽误点时间。

京公网安备 11010502036488号