思路
队列存储字符流,如果队首出现的次数大于0,出队,insert直接入队。队列为空输出‘#’
为了快速查询字符出现的次数,可以用数组存储,128是常见字符,256是全部字符,保险起见最好是256;
代码
import java.util.*; public class Solution { //字符出现次数 private int[] c=new int[128]; //字符流缓冲区 private Queue<Character> q=new LinkedList<>(); //Insert one char from stringstream public void Insert(char ch) { c[ch]++; q.offer(ch); } //return the first appearence once char in current stringstream public char FirstAppearingOnce() { while(!q.isEmpty()){ if(c[q.peek()]==1){ return q.peek(); }else{ q.poll(); } } return '#'; } }