字符流中第一个不重复的字符

题目描述

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

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

解题思路:
1.首先用哈希表来存储字符和出现次数
2.统计次数,返回第一个只出现一次的字符

实际操作:

    ArrayList<Character> list = new ArrayList<>();
    HashMap<Character, Integer> hashMap= new HashMap<>();
     public void Insert(char ch){
         //统计字符出现次数
         if (hashMap.containsKey(ch)){
             hashMap.put(ch, hashMap.get(ch)+1);
         }
         else hashMap.put(ch, 1);
         list.add(ch);
    }
     public char FirstAppearingOnce(){
         //返回第一个只出现一次的字符
        char temp='#';
        for (char num : list) {
            if (hashMap.get(num)==1) {temp=num;break;}
        }
        return temp;
     }
阅读更多
文章标签: java
个人分类: java
上一篇二叉搜索树的后序遍历序列
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭