java
我来写个java的;
看到好多人用数组,感觉会浪费空间enmmm;
分析 :
- 插入的时候统计插入字符出现的次数 (第一个想到的是hashMap, 但是hashMap不保证插入顺序)
- 要保证顺序的话有这些: 一.数组(统计所有字符,并且插> s入有序) 二.LinkedHashMap(保证插入顺序) 三.TreeMap(插入后进行排序)
- 所以 (一),(二)都是可以的, 我选择LinkedHashMap
结果出来了:
插入的时候判断是否存在key , 不存在则插入((char)'当前字符',(int)1) , 存在则插入((char)'当前字符',(int)当前值+1);ps:当然只要不为1都行
import java.util.*; public class Solution { private LinkedHashMap<Character, Integer> link = new LinkedHashMap<>(); //Insert one char from stringstream public void Insert(char ch) { if (link.containsKey(ch)) { link.put(ch, link.get(ch) + 1); } else { link.put(ch, 1); } } //return the first appearence once char in current stringstream public char FirstAppearingOnce() { Set<Character> characters = link.keySet(); for (char c : characters) { if (link.get(c) == 1) { return c; } } return '#'; } }