题目描述
请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符 “go” 时,第一个只出现一次的字符是 “g”。当从该字符流中读出前六个字符“google" 时,第一个只出现一次的字符是 “l”。
解题思路
import java.util.*;
public class Solution {
private int[] cnts = new int[256];
private Queue<Character> queue = new LinkedList<>();
public void Insert(char ch) {
cnts[ch]++;
queue.add(ch);
while (!queue.isEmpty() && cnts[queue.peek()] > 1)
queue.poll();
}
public char FirstAppearingOnce() {
return queue.isEmpty() ? '#' : queue.peek();
}
}
字符流中首次唯一字符
本文介绍了一种算法,用于从连续输入的字符流中找到第一个仅出现一次的字符。通过使用数组和队列的数据结构,可以高效地解决此问题。当字符流更新时,算法能快速响应并提供最新结果。
3444





