class Solution {
//Insert one char from stringstream
//思路:利用队列来进行入队和出队操作,插入时,当新的字符没有出现过插入到队尾,当栈顶元素重复出现,弹出栈顶,这个新的值不要入队
//当hashmao的值contain了,则 置为true,循环判断(hshmap<队列顶端元素>为true? 就pop)
//java中判断hashmap元素是否存在,用bool值作为value,不存在的时候设置为false,存在时的时候设置为true
//hashmap 里面默认的值好像都是null,就看做没有默认值吧
Queue[HTML_REMOVED] que=new LinkedList[HTML_REMOVED]();
HashMap[HTML_REMOVED] map=new HashMap[HTML_REMOVED]();
public void insert(char ch){
if(!map.isEmpty()&&map.containsKey(ch))
{
map.put(ch,true);
while(!que.isEmpty()&&map.get(que.peek()))
{
que.poll();
}
}
else
{
map.put(ch,false);
que.offer(ch);
}
}
//return the first appearence once char in current stringstream
public char firstAppearingOnce(){
if(que.isEmpty()) return '#';
return que.peek();
}
}