字符流中第一个不重复的字符

java

我来写个java的;

看到好多人用数组,感觉会浪费空间enmmm;

分析 :

  1. 插入的时候统计插入字符出现的次数 (第一个想到的是hashMap, 但是hashMap不保证插入顺序)
  2. 要保证顺序的话有这些: 一.数组(统计所有字符,并且插> s入有序) 二.LinkedHashMap(保证插入顺序) 三.TreeMap(插入后进行排序)
  3. 所以 (一),(二)都是可以的, 我选择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 '#';
    }
}
全部评论

相关推荐

点赞 评论 收藏
转发
点赞 收藏 评论
分享
牛客网
牛客企业服务