import java.util.*; public class Solution { public Map<Character,Integer> myMap=new HashMap<>(); Queue<Character> queue=new LinkedList<>(); //Insert one char from stringstream public void Insert(char ch) { myMap.put(ch,myMap.getOrDefault(ch,0)+1); queue.offer(ch); //清理队列头部不再是第一个不重复的字符的元素 可能有多个重复元素 while(!queue.isEmpty()&&myMap.get(queue.peek())>1){ queue.poll(); } } //return the first appearence once char in current stringstream public char FirstAppearingOnce() { if(queue.isEmpty()){ return '#'; } return queue.peek(); // 队列头部的字符是第一个不重复的字符 } }