题目的链接在这里:https://www.nowcoder.com/practice/00de97733b8e4f97a3fb5c680ee10720
- 题目大意
- 一、示意图
- 二、解题思路
- 队列
题目大意 请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g"。当从该字符流中读出前六个字符“google"时,第一个只出现一次的字符是"l"。 后台会用以下方式调用Insert 和 FirstAppearingonce 函数
一、示意图 二、解题思路
队列队列
代码如下:
import java.util.*;
public class Solution {
//找出第一个 只出现一次的字符
//Insert one char from stringstream
private int[] cnts=new int[256];
Queue queue=new linkedList<>();
public void Insert(char ch)
{
//先进栈
queue.add(ch);
//然后对应位置加一
cnts[ch]++;
//然后进行判定
while (!queue.isEmpty()&&cnts[queue.peek()]>1){
//非空 并且 当前队列头 对应位置数量大于1 那就说明有很多
queue.poll();
}
}
public char FirstAppearingOnce()
{
//直接进行判断
return queue.isEmpty()?'#':queue.peek();
}
}


![java 剑指offer之[数据结构 中等]JZ75 字符流中第一个不重复的字符 java 剑指offer之[数据结构 中等]JZ75 字符流中第一个不重复的字符](http://www.mshxw.com/aiimages/31/354088.png)
