专栏首页尾尾部落[剑指offer] 字符流中第一个不重复的字符

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

题目描述

请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符”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 stringstream
    public 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 stringstream
    public char FirstAppearingOnce()
    {
        for(int i = 0; i < s.length(); i++){
            if(map.get(s.charAt(i)) == 1)
                return s.charAt(i);
        }
        return '#';
    }
}

版权属于: 尾尾部落

原文地址: https://weiweiblog.cn/firstappearingonce/

转载时必须以链接形式注明原始出处及本声明。

window._bd_share_config={"common":{"bdSnsKey":{},"bdText":"","bdMini":"2","bdMiniList":false,"bdPic":"","bdStyle":"1","bdSize":"24"},"share":{}};with(document)0[(getElementsByTagName('head')[0]||body).appendChild(createElement('script')).src='http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion='+~(-new Date()/36e5)];

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • [LeetCode]Roman to Integer 罗马数字转化成整数 [LeetCode]Roman to Integer 罗马数字转化成整数

    链接:https://leetcode.com/problems/roman-to-integer/#/description 难度:Easy 题目:13....

    尾尾部落
  • [剑指offer] 扑克牌顺子

    LL今天心情特别好,因为他去买了一副扑克牌,发现里面居然有2个大王,2个小王(一副牌原本是54张^_^)…他随机从中抽出了5张牌,想测测自己的手气,看看能不能抽...

    尾尾部落
  • [LeetCode] Longest Common Prefix 最长公共前缀 [LeetCode] Longest Common Prefix 最长公共前缀

    链接:https://leetcode.com/problems/longest-common-prefix/#/description 难度:Easy ...

    尾尾部落
  • LRU算法——python实现

    Design and implement a data structure for Least Recently Used (LRU) cache. It s...

    py3study
  • Python 程序执行时如何显示进度条?

    先来说下 tqdm 的使用场景,工作中有时候会遇到这样的问题,想要将某个任务执行很多次,显而易见,可以使用 for 循环来控制它重复执行很多次。

    abs_zero
  • 数据猿荣获2017 ECI Festival国际数字商业创新节“最佳大数据媒体奖”

    【数据猿导读】 12月27日,2017 ECI Festival国际数字商业创新节在北京·中国大饭店隆重举行,数据猿在大数据应用创新主题峰会上获得了由主办方颁发...

    数据猿
  • 分布式锁实现

    我们知道在同一个JVM中,可以通过Volatile、Synchronized、ReentrantLock 三个关键字来实现线程的安全。那么在分布式系统中这些是无...

    春哥大魔王
  • C++ 获取当前系统时间

    time() 是系统C语言的标准接口,通过man time 或者man 2 time 可查看详细的使用方法。

    宇航
  • python学习--Django虚拟环境

      #    1. 安装 python   #    2. 安装virtualenvwrapper   #    3. 虚拟环境相关操作   #    4. 进...

    py3study
  • 创业公司如何宣布融资,才能有效增加知名度并吸引人才?

    【新智元导读】本文的作者 Tiffany Spencer 曾帮助数百家公司在融资后成功发布有影响力的公告,吸引顶尖人才和潜在收购者的注意力。这篇文章能帮助融资成...

    新智元

扫码关注云+社区

领取腾讯云代金券