推荐阅读:宇宙条的工作总结:一年前还在面试找工作,一年后在面试找工作的学弟学妹们:第一次当面试官的经历分享小编在求职找找工作期间剑指offer上的算法题刷了很多遍,并且每道题小编当时都总结了一种最适合面试时手撕算法的最优解法考虑到剑指offer算法题在面试中的高频出现,小编每天和大家分享一道剑指offer上的算法题,以及小编总结的答案。下面是第054是道剑指offer算法题

题目描述

请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g"。当从该字符流中读出前六个字符“google"时,第一个只出现一次的字符是"l"。注:如果当前字符流没有存在出现一次的字符,返回#字符。分析:

思路比较明确:

  1. 需要记录每个字符出现的次数

  2. 为了加快获取第一次出现的字符,可以使用辅助数据结构保存潜在的字符,后续获取第一个出现的字符时不用全局遍历一遍了

import java.util.*;public class Solution {    //Insert one char from stringstream         //统计所有字符串的出现次数    private int[] count = new int[256];         //主要是为了快速查找潜在的出现一次的字符串    private LinkedListqueue = new LinkedList<>();    public void Insert(char ch){        count[ch] += 1;        if(count[ch]==1)            queue.addLast(ch);    }  //return the first appearence once char in current stringstream    public char FirstAppearingOnce(){        while( !queue.isEmpty() && count[queue.peek()]>=2)//查找第一个出现一次的字符串           queue.removeFirst();        if(queue.isEmpty())            return '#';        return queue.peek();                 }}

猜你还想看

分享一个实战项目:基于SpringBoot的车牌识别系统,附项目源码!!

长按,扫码,关注

及时收看更多精彩内容

博主:今日头条大数据工程师专注:求职 面经 源码 java 大数据技术分享

点击”阅读原文“:领取5T精品资料面试总结100+实战项目

我知道你 “在看

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

  1. 剑指offer算法题028:数组中出现次数超过一半的数字

    小编在求职找找工作期间剑指offer上的算法题刷了很多遍,并且每道题小编当时都总结了一种最适合面试时手撕算法的最优解法.考虑到剑指offer算法题在面试中的高频出现,小编每天和大家分享一道剑指offe ...

  2. 统计数组中每个数字出现的次数_剑指Offer(二十八) 数组中次数出现超过一半的数字...

    题目描述 思路与解析 题目描述 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字.例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}.由于数字2在数组中出现了5次,超过数组长 ...

  3. java计算整数出现的次数_[剑指offer题解][Java]1到n整数中1出现的次数

    前言 众所周知,<剑指offer>是一本"好书". 如果你是个算法菜鸡(和我一样),那么最推荐的是先把剑指offer的题目搞明白. 对于剑指offer题解这个系列,我的 ...

  4. abap判断包含字符当中包含小数点_剑指Offer整理3 -- 栈和队列 + 数学和字符串

    专题3 栈和队列 + 数学和字符串 专题3-1 栈和队列 1. 栈的压入弹出序列 题目描述 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序.假设压入栈的所有数字 ...

  5. 剑指 offer 编程题 C++ 版总结(中)

    解题思路:从根结点开始向下进行对比,(1) 若两边的结点为空,返回 true.(2) 一个结点为空,而另一个结点不为空,此时二叉树不是对称的,返回 false.(3) 两边结点都不为空,但是结点的值不 ...

  6. 剑指offer算法题,输入一个链表,反转链表后,输出新链表的表头。

    链表的算法题一直做的浑浑噩噩的,为了避免忘记以及能够及时的温故知新,所以将本次的解答记录如下: 话不多说,先贴代码: /* public class ListNode {int val;ListNod ...

  7. java 数组中某个数出现的概率_剑指Offer解题报告(Java版)——排序数组中某个数的个数 38...

    分析问题 问题只需要找到排序数组中某个数K的个数,由于已经是排序了,K一定是在一堆的,所以我们只需要找到第一个K的index1,然后找到最后一个K的index2就可以了 而寻找K的过程我们一般通过二分 ...

  8. Day5.牛客网剑指offer 67题之43-54题(java代码)

    文章目录 Day5.牛客网剑指offer 67题之43-54题 43.左旋转字符串 44.翻转单词顺序列 45.扑克牌顺序 46.孩子们的游戏 47.求1+2+...+n 48.不用加减乘除做加法 4 ...

  9. java queue 最大值_[剑指offer题解]队列的最大值/滑动窗口的最大值

    前言 众所周知,<剑指offer>是一本"好书". 为什么这么说? 因为在技术面试中,它里面罗列的算法题在面试中出现的频率是非常非常高的. 有多高,以我目前不多的面试来 ...

最新文章

  1. YOLO v1到YOLO v4(下)
  2. python在哪里写代码比较适合-程序员面试被要求手写代码,你与顶级程序员的差别在哪?...
  3. python关闭读写的所有的文件-Python文件操作:文件的打开关闭读取写入
  4. jquery 设置style:display 其实很方便的
  5. Netty中实现多客户端连接与通信-以实现聊天室群聊功能为例(附代码下载)
  6. 12c分页查询特性FETCH FIRST ROWS,OFFSET ROWS FETCH NEXT ROW LIMIT Clause子句
  7. 2020非全日计算机博士,在职攻读博士是不是非常难,免考在职博士和非全日博士有什么不同...
  8. Mars 是什么、能做什么、如何做的——记 Mars 在 PyCon China 2018 上的分享
  9. gin c.Next()方法
  10. React开发环境搭建
  11. Transact-SQL管理与开发实例精粹
  12. 美化滚动条jquery.nicescroll.js
  13. 支持小游戏开发的“引擎四剑客”
  14. Windows10打印机共享无法连接到打印机:0x0000011b
  15. 【配置】Pycharm远程连接服务器、配置SSH、配置py环境
  16. GitLab分支介绍
  17. SQL 注入之二次注入
  18. Python分析那些“标题党”文章
  19. ARM架构与编程--基于STM32F103 (1)LED原理图
  20. 【Java游戏开发合集】毕业设计(附源码+资料+课件)

热门文章

  1. java thread setname_Java Thread setName()方法
  2. 通常每个套接字地址只允许使用一次
  3. 图片插值数据_结合PS用这招来增强ArcGIS插值图出图效果
  4. graphpad怎么修改图片大小_Graphpad Prism 8.0进阶篇-绘制小提琴图
  5. 数据接口测试工具 Postman 介绍
  6. 解决svn log显示no author,no date的方法之一
  7. 设计模式-中介者模式(21)
  8. BZOJ3527:[ZJOI2014]力(FFT)
  9. nfs挂载在centos6后注意
  10. 【iOS 开发】使用 iMazing 进行沙盒调试