博客
关于我
剑指Offer打卡day 41—— Acwing 64. 字符流中第一个只出现一次的字符
阅读量:803 次
发布时间:2019-03-26

本文共 1149 字,大约阅读时间需要 3 分钟。

【题目描述】

以下代码实现了一个用于处理字符串流并跟踪字符出现次数的解决方案。该方案包含两个主要功能:插入字符到队列中以及返回队列中第一个只出现一次的字符。

【思路】

该解决方案使用了队列和哈希集合的组合来实现效率高的字符处理。具体来说,它通过以下方式实现:

  • 将字符插入队列中,并更新字符出现次数。
  • 当需要返回第一个只出现一次的字符时,队列前端的字符会被检查。如果对应的字符在队列中只出现了一次,则直接返回该字符。否则,队列会继续向前移动,直到找到满足条件的字符。
  • 如果队列中没有找到满足条件的字符,则返回特定占位符字符。
  • 【代码解析】

    import java.util.*;  public class Solution {      Map
    count = 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(); } }

    该代码通过队列来维护字符流,并通过哈希集合来记录每个字符的出现次数。这样,当处理字符串流时,可以在常数时间内获取第一个只出现一次的字符,这大大提高了效率。

    【技术细节】

  • 使用队列来维护字符流,确保先进先出的顺序。
  • 哈希集合用于记录字符出现次数,时间复杂度为O(1),适用于频繁查找的场景。
  • firstAppearingOnce 方法通过前置检查和循环清除重复字符,保证返回的字符是当前队列中第一个唯一出现的字符。
  • 回退字符’#’用于表示没有找到符合条件的字符,这可以根据具体需求进行修改。
  • 转载地址:http://gbqyk.baihongyu.com/

    你可能感兴趣的文章
    Navicat控制mysql用户权限
    查看>>
    navicat操作mysql中某一张表后, 读表时一直显示正在载入,卡死不动,无法操作
    查看>>
    Navicat连接mysql 2003 - Can't connect to MySQL server on ' '(10038)
    查看>>
    Navicat连接mysql数据库中出现的所有问题解决方案(全)
    查看>>
    Navicat连接Oracle出现Oracle library is not loaded的解决方法
    查看>>
    Navicat连接Oracle数据库以及Oracle library is not loaded的解决方法
    查看>>
    Navicat连接sqlserver提示:未发现数据源名并且未指定默认驱动程序
    查看>>
    navicat连接远程mysql数据库
    查看>>
    Navicat通过存储过程批量插入mysql数据
    查看>>
    Navicat(数据库可视化操作软件)安装、配置、测试
    查看>>
    navigationController
    查看>>
    NB-IOT使用LWM2M移动onenet基础通信套件对接之APN设置
    查看>>
    NBear简介与使用图解
    查看>>
    Vue过滤器_使用过滤器进行数据格式化操作---vue工作笔记0015
    查看>>
    Ncast盈可视 高清智能录播系统 IPSetup.php信息泄露+RCE漏洞复现(CVE-2024-0305)
    查看>>
    NCNN中的模型量化解决方案:源码阅读和原理解析
    查看>>
    NCNN源码学习(1):Mat详解
    查看>>
    nc命令详解
    查看>>
    NC综合漏洞利用工具
    查看>>
    ndarray 比 recarray 访问快吗?
    查看>>