算法1
(暴力枚举) $O(n^2)$
非常暴力,时间复杂度也高,空间复杂度也高,完全就是将上一个题照搬过来了
时间复杂度
参考文献
java 代码
class Solution {
//Insert one char from stringstream
//记录这个元素出现第三次也是不可以的
Map<Character,Integer> hm = new HashMap<>();
List<Character> ml = new ArrayList<>();
public void insert(char ch){
ml.add(ch);
if(hm.get(ch)==null) hm.put(ch,1);
else hm.put(ch,hm.get(ch)+1);
}
//return the first appearence once char in current stringstream
public char firstAppearingOnce(){
for(int i=0;i<ml.size();i++){
if(hm.get(ml.get(i))==1) return ml.get(i);
}
return '#';
}
}
算法2
() $O(n^2)$
几乎没啥变化,就是上面的存储的箱子了
时间复杂度
参考文献
java 代码
class Solution {
//Insert one char from stringstream
//记录这个元素出现第三次也是不可以的
//不同于消消乐
Map<Character,Integer> hm = new HashMap<>();
Queue<Character> ml = new LinkedList<>();
public void insert(char ch){
if(hm.get(ch)==null) {hm.put(ch,1);ml.offer(ch);}
else
{
if(hm.get(ch)==1) ml.remove(ch);
hm.put(ch,hm.get(ch)+1);
}
}
//return the first appearence once char in current stringstream
public char firstAppearingOnce(){
if(ml.isEmpty()) return '#';
else return ml.peek();
}
}