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

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

    题目

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

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

    思路

    我用LinkedHashMap,然后迭代器老是有问题,所以只能改成Hashmap加ArrayList,多了一个步骤。
    首先是insert,在这里存放,通过hashmap存放字符和次数,list存放顺序,最后读取一下就行了。

    代码

      HashMap<Character, Integer> map = new HashMap<>();
      ArrayList<Character> list = new ArrayList<>();
    
      public void Insert(char ch) {
        if (map.containsKey(ch)) {
          map.put(ch, map.get(ch) + 1);
        } else {
          map.put(ch, 1);
        }
    
        list.add(ch);
      }
    
      public char FirstAppearingOnce() {
        char c = '#';
        for (char key : list) {
          if (map.get(key) == 1) {
            c = key;
            break;
          }
        }
        return c;
      }
    
  • 相关阅读:
    拆分跨天的时间数据
    模板
    更换数据库服务器迁移步骤
    缺失索引
    flex布局解说和属性
    Vuejs中关于computed、methods、watch,mounted的区别
    皮囊
    回家
    江苏旅游计划
    重写原生alert,弹出层过一会就消失
  • 原文地址:https://www.cnblogs.com/blogxjc/p/12422838.html
Copyright © 2011-2022 走看看