剑指offer — 数据流中第一个不重复的数字

来源:互联网 发布:开源java web绘图工具 编辑:程序博客网 时间:2024/05/20 13:04

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

解题思路:使用hash的方式进行解决

java

import java.util.*;public class Solution {    //Insert one char from stringstream    Map<Character, Integer> map = new HashMap<>();    int index = 0;    int HAVE = -1;    public void Insert(char ch) {        if (map.containsKey(ch)) {            map.put(ch, HAVE);        } else {            map.put(ch, index);        }        index++;    }  //return the first appearence once char in current stringstream    public char FirstAppearingOnce() {        int index = Integer.MAX_VALUE;        char res = '#';        for (Character c : map.keySet()) {            if (map.get(c) != HAVE && map.get(c) < index) {                res = c;                index = map.get(c);            }        }        return res;    }}


阅读全文
0 0