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 '#';
}
}


京公网安备 11010502036488号