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 '#';
        }
    }
    
    
    
  • 相关阅读:
    Spring Boot SockJS应用例子
    Spring Boot+STOMP解决消息乱序问题
    Spring boot集成Websocket,前端监听心跳实现
    吐槽Windows 8,就没见过这么烂的平板操作系统
    怎样在MyEclipse上耍Chrome
    HDOJ 4876 ZCC loves cards
    IIS7.5 配置 PHP 5.3.5
    关于ANDROID模拟器的一些事
    性能測试命令字段解释
    排序算法复习
  • 原文地址:https://www.cnblogs.com/wupeixuan/p/8623398.html
Copyright © 2011-2022 走看看