zoukankan      html  css  js  c++  java
  • 剑指Offer-字符流中第一个不重复的字符

    题目描述

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

    输出描述:

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

    思路

    使用一个LinkedHashMap来统计字符出现的次数

    代码实现

    package String;
    
    import java.util.LinkedHashMap;
    import java.util.Map;
    
    /**
     * 字符流中第一个不重复的字符
     * 题目描述
     * 请实现一个函数用来找出字符流中第一个只出现一次的字符。
     * 例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g"。
     * 当从该字符流中读出前六个字符“google"时,第一个只出现一次的字符是"l"。
     * 输出描述:
     * 如果当前字符流没有存在出现一次的字符,返回#字符。
     * 思路:
     * 使用一个LinkedHashMap来统计字符出现的次数
     */
    public class Solution26 {
    
        Map<Character, Integer> linkedHashMap = new LinkedHashMap<>();
    
        //Insert one char from stringstream
        public void Insert(char ch) {
            if (linkedHashMap.containsKey(ch)) {
                linkedHashMap.put(ch, linkedHashMap.get(ch) + 1);
            } else {
                linkedHashMap.put(ch, 1);
            }
        }
    
        //return the first appearence once char in current stringstream
        public char FirstAppearingOnce() {
            //遍历map集合,判断出现次数是否为1
            for (Map.Entry<Character, Integer> entry :
                    linkedHashMap.entrySet()) {
                if (entry.getValue() == 1) {
                    return entry.getKey();
                }
            }
            return '#';
        }
    }
    
    
    
  • 相关阅读:
    Js面向对象
    JavaScript:this是什么?
    vs2010 连接 oracle 11g
    Oracle 数据库 数据文件 表 表空间 用户的关系
    消息推送
    Zookeeper's Bug
    hadoop启动之后没有namenode和secondarynamenode
    大数据zookeeper connect time out
    Silverlight中需要用到模板选择器(DataTemplateSelector)的替代方案
    当SQL Server数据库遇到Oracle数据交互接口
  • 原文地址:https://www.cnblogs.com/wupeixuan/p/8623398.html
Copyright © 2011-2022 走看看