zoukankan      html  css  js  c++  java
  • 剑指offer五十四之字符流中第一个不重复的字符

    一、题目

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

    二、思路

         使用LinkedHadshMap统计字符个数,详见代码注释

    三、代码

    import java.util.LinkedHashMap;
    import java.util.Map;
    import java.util.Set;
    
    public class Solution {
        LinkedHashMap<Character, Integer> lhm = new LinkedHashMap<Character, Integer>();
        //Insert one char from stringstream
        public void Insert(char ch)
        {
            //统计字符的个数,注意用LinkedHashMap
                if (lhm.containsKey(ch)) {
                    lhm.put(ch, lhm.get(ch) + 1);
                } else {
                    lhm.put(ch, 1);
                }
        }
        //return the first appearence once char in current stringstream
        public char FirstAppearingOnce()
        {
            //遍历map,寻找第一个只出现一次的数
            char num = 0;
            int flag=0; //判断有没有只出现一次的字符
            Set<Map.Entry<Character, Integer>> set = lhm.entrySet();
            for (Map.Entry<Character, Integer> es : set) {
                char key = es.getKey();
                int value = es.getValue();
                if (value == 1) {
                    num = key;
                    flag=1;//有只出现一次的字符
                    break;
                }
            }
            //没有只出现一次的字符,返回‘#’
            if(flag==0){
                num='#';
            }
            flag=0;//复位,为下一次判断准备
            return num;
        }
    }
    View Code

    ---------------------------------------------

    参考链接:

    https://www.nowcoder.com/practice/00de97733b8e4f97a3fb5c680ee10720?tpId=13&tqId=11207&rp=3&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking

  • 相关阅读:
    HttpClient
    spring入门
    morphia进阶
    morphia基本API方法
    mangodb数据库框架morphia注解
    学与思
    解决vscode执行yarn启动项目报错
    使用swiper+动画实现轮播图自动播放
    vue中使用el-tree实现一行显示多条数据
    使用git命令提交部分修改代码
  • 原文地址:https://www.cnblogs.com/hezhiyao/p/7698667.html
Copyright © 2011-2022 走看看