请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符"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;
}
}