• 剑指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;
      }
    
  • 相关阅读:
    4.12 IDEA 如何新建 Java 项目 (图文讲解, 良心教程)
    4.11 AndroidStudio快捷键总结
    4.9 Android AndroidX的迁移
    4.8 build.gradle中正确地导入RecyclerView依赖
    4.6 构建之法7
    4.5 构建之法6
    4.4 构建之法5
    4.3 构建之法4
    4.2 构建之法3
    4.1 构建之法2
  • 原文地址:https://www.cnblogs.com/blogxjc/p/12422838.html
Copyright © 2020-2023  润新知