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

输出描述:
如果当前字符流没有存在出现一次的字符,返回#字符。

解析一:比较直接暴力。思想就是从当前的字符往后找以及往前找,该字符的前方以及后方均没有重复的才算是第一次出现的字符了,需要返回该字符。不存在这样的字符,就返回‘#’

import java.util.ArrayList;
import java.util.List;
public class Solution {//Insert one char from stringstreamList<Character> list = new ArrayList<>();//存储Insert(char ch)函数插入的字符//Insert one char from stringstreampublic void Insert(char ch){list.add(ch);}//return the first appearence once char in current stringstreampublic char FirstAppearingOnce(){for(int i=0;i<list.size();i++){boolean flag1=false;//该字符后方是否有重复的标识boolean flag2=false;//该字符前方是否有重复的标识for(int j=i+1;j<list.size();j++){if(list.get(j)==list.get(i)){flag1=true;//后方有重复的字符break;}}for(int k=0;k<i;k++){if(list.get(k)==list.get(i)){flag2=true;//前方有重复的字符break;}}if(!flag1&&!flag2){//该字符的后方以及前方均没有重复的标识就输出该字符return list.get(i);}}return '#';//前方都没有返回,说明没有找到了}
}

解析二:该方法时间复杂度为O(n),就是利用一个数组统计每个字符出现的次数

import java.util.ArrayList;
import java.util.List;
public class Solution
{    int[] count=new int[256];List<Character> list=new ArrayList<>();//Insert one char from stringstreampublic void Insert(char ch){list.add(ch);if(count[ch]==0)//该字符第一个出现count[ch]=1;else count[ch]+=1;//该字符之前出现过,进行累加}//return the first appearence once char in current stringstreampublic char FirstAppearingOnce(){for(Character c:list){if(count[c]==1)//数组值为0不算,当为1的时候就开始返回了return c;}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"时,第一个只出现一次的字符是" ...

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

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

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

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

最新文章

  1. ps一点等于多少厘米_50寸液晶电视尺寸是多少
  2. CDQ分治 Jam's problem again [HDU - 5618]
  3. 【.Net】C# 将Access中时间段条件查询的数据添加到ListView中
  4. CAN笔记(18) 对象字典
  5. pandas Dataframe表格转Markdown格式
  6. Leecode刷题热题HOT100导航目录
  7. python实现的简版iconv
  8. Linux系统下架设PPTP ×××服务器
  9. proteus 的使用
  10. 如何安装火狐浏览器插件
  11. eclipse快捷键(alt+/)不起作用的解决办法
  12. [NAS] Synology (群晖) DSM相关服务及套件安装
  13. 解析常见网络钓鱼攻击方法
  14. 报刊订阅管理系统(数据库课程设计)
  15. 新型企业最重视的评估手段:360评估
  16. 反汇编系列(一)——工具篇
  17. FC6安装配置详细介绍
  18. 40篇最受网友欢迎的web前端HTML精选文章合集
  19. iOS视频——视频文件、播放视频
  20. 准妈妈离职如何继续购买生育保险

热门文章

  1. 1003 我要通过! (20分)_26行代码AC
  2. 进程P1、P2、P3、P4和P5的前趋图如下图所示。若用PV操作控制进程P1~P5并发执行的过程,则需要设置6个信号S1、S2、S3、S4,且信号量S1~S4的初值都等于0。下图中a和b处应分别填写(
  3. linux-RPM与YUM
  4. LNMP构架概述及相关服务的搭建(附带搭建论坛实验)
  5. python和按键精灵自动化测试_按键精灵对APP自动化测试(下)
  6. java拦截器_Java工程师年底跳槽高潮即将到来,斩获满意offer的必备技巧(二)
  7. linux怎么制作运行包,简单 RPM 包制作
  8. php rpc调用,PHP 通过 JSON-RPC 调用实现以太坊交互
  9. amd显卡风扇调节_非公版才是真爱 讯景XFX RX6800 XT海外版显卡评测
  10. python循环语句知识点_Python for 循环语句【每日一个知识点第115期