本文首发于我的个人博客:尾尾部落

题目描述

请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g"。当从该字符流中读出前六个字符“google"时,第一个只出现一次的字符是"l"。

解题思路

用一个哈希表来存储每个字符及其出现的次数,另外用一个字符串 s 来保存字符流中字符的顺序。

  • 每次插入的时候,在字符串 s 中插入该字符,然后在哈希表中查看是否存在该字符,如果存在则它的 value 加1,如果不存在,它在哈希表中插入该字符,它的 value 为 1。
  • 查找第一个只出现一次的字符时,按照 s 的顺序,依次查找 map 中字符出现的次数,当 value 为 1 时,该字符就是第一个只出现一次的字符。

参考代码

import java.util.HashMap;
public class Solution {HashMap<Character, Integer> map = new HashMap<Character, Integer>();StringBuffer s = new StringBuffer();//Insert one char from stringstreampublic void Insert(char ch){s.append(ch);if(map.containsKey(ch)){map.put(ch, map.get(ch)+1);}else{map.put(ch, 1);}}//return the first appearence once char in current stringstreampublic char FirstAppearingOnce(){for(int i = 0; i < s.length(); i++){if(map.get(s.charAt(i)) == 1)return s.charAt(i);}return '#';}
}

[剑指offer] 字符流中第一个不重复的字符相关推荐

  1. 剑指offer——面试题55:字符流中第一个不重复的字符

    剑指offer--面试题55:字符流中第一个不重复的字符 Solution1: 当年第一次做这个题的做法 对此题最大的感想是: 1)区分deque(双端队列)和queue(队列): 2)要熟悉queu ...

  2. 《剑指offer》-- 第一个只出现一次的字符、数组中只出现一次的数字、字符流中第一个不重复的字符、数组中重复的数字

    一.第一个只出现一次的字符: 1.题目: 在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写 ...

  3. 【剑指offer-54】20190907/03 字符流中第一个不重复的字符

    [剑指offer-54]字符流中第一个不重复的字符 考点:字符串 时间限制:1秒 空间限制:32768K 请实现一个函数用来找出字符流中第一个只出现一次的字符.例如,当从字符流中只读出前两个字符&qu ...

  4. java统计一个字符串中每个字符出现的次数_剑指offer算法题054:字符流中第一个不重复的字符...

    推荐阅读:宇宙条的工作总结:一年前还在面试找工作,一年后在面试找工作的学弟学妹们:第一次当面试官的经历分享小编在求职找找工作期间剑指offer上的算法题刷了很多遍,并且每道题小编当时都总结了一种最适合 ...

  5. 剑指offer——python【第54题】字符流中第一个不重复的字符

    题目描述 请实现一个函数用来找出字符流中第一个只出现一次的字符.例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g".当从该字符流中读出 ...

  6. 剑指offer:字符流中第一个不重复的字符

    题目描述 请实现一个函数用来找出字符流中第一个只出现一次的字符.例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g".当从该字符流中读出 ...

  7. 《剑指offer》字符流中第一个不重复的字符

    题目:请实现一个函数用来找出字符流中第一个只出现一次的字符.例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g".当从该字符流中读出前六 ...

  8. (剑指Offer)面试题55:字符流中第一个不重复的字符

    题目: 请实现一个函数用来找出字符流中第一个只出现一次的字符.例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g".当从该字符流中读出前 ...

  9. 剑指offer之字符流中第一个不重复的字符

    题目描述 请实现一个函数用来找出字符流中第一个只出现一次的字符.例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g".当从该字符流中读出 ...

最新文章

  1. linux 三大利器 grep sed awk sed
  2. 基于排队理论的云计算模型的MATLAB仿真
  3. java基础(六) switch语句的深入解析
  4. 03 ORA系列:ORA-00942 表或视图不存在 table or view does not exist
  5. COSCon‘20 参会指南 | 你想知道的都在这里(文末有福利)
  6. Wythoff's game
  7. jQuery中的map()方法
  8. 基于改进麻雀算法优化变分模态分解(IAMSSA—VMD)的信号分解方法
  9. python3源码剖析新版_《Python源码剖析》
  10. 原理 拉普拉斯金字塔_十三 高斯金字塔和拉普拉斯金字塔
  11. linux PCI/PCIe驱动之pci_read_bases的理解
  12. 卷积神经网络(CNN)详解
  13. vue打包导致浏览器崩溃的解决方法
  14. Zotero + connected papers论文顺藤摸瓜
  15. 使用服务器端控制AJAX页面缓存
  16. Docker网络、容器编排
  17. java下cmyk图片读取和转换rgb
  18. 示波器探头如何连接设备?
  19. 单目视觉技术、双目视觉技术、多目视觉技术
  20. Python实现练打字小程序

热门文章

  1. redis 通过aof日志恢复_宕机了,宕机了,Redis数据丢了怎么办?
  2. linux 内核调试前准备(简单记录,以后补充)
  3. 物理机存放mysql实例原则_MySQL数据库规范 (设计规范+开发规范+操作规范)
  4. Vivado之增量编译的实现
  5. Cadence 16.6 安装记录
  6. 【FPGA】流水线学习笔记
  7. 也许开发需要的只是一份简单明了的表格
  8. HDU-1025 Constructing Roads In JGShining's Kingdom
  9. 系统异常捕捉处理设计文档
  10. Win10如何查看我们的电池健康