本文共 1149 字,大约阅读时间需要 3 分钟。
【题目描述】
以下代码实现了一个用于处理字符串流并跟踪字符出现次数的解决方案。该方案包含两个主要功能:插入字符到队列中以及返回队列中第一个只出现一次的字符。【思路】
该解决方案使用了队列和哈希集合的组合来实现效率高的字符处理。具体来说,它通过以下方式实现:【代码解析】
import java.util.*; public class Solution { Mapcount = new HashMap<>(); Queue q = new LinkedList<>(); public void insert(char ch) { q.offer(ch); if (!count.containsKey(ch)) { count.put(ch, 1); } else { count.put(ch, count.get(ch) + 1); } } public char firstAppearingOnce() { if (!q.isEmpty() && count.get(q.peek()) == 1) { return q.peek(); } while (!q.isEmpty() && count.get(q.peek()) > 1) { q.poll(); } return q.isEmpty() ? '#' : q.peek(); } }
该代码通过队列来维护字符流,并通过哈希集合来记录每个字符的出现次数。这样,当处理字符串流时,可以在常数时间内获取第一个只出现一次的字符,这大大提高了效率。
【技术细节】
firstAppearingOnce
方法通过前置检查和循环清除重复字符,保证返回的字符是当前队列中第一个唯一出现的字符。转载地址:http://gbqyk.baihongyu.com/