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

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 '#';
    }
}
全部评论

相关推荐

牛仔知道哦:你是我见过最美的牛客女孩
点赞 评论 收藏
分享
神哥不得了:神哥来啦~1.建议不要包装,很容易问穿2.没日常也能找到暑期3.简历模板换一下,字体和版式看着好难受,而且最好压缩到一页,技术的倒数第2和3重复啦,项目建议换两个高质量的上去,如果时间够的话,八股就把高频top50的题目多巩固几遍,吃透,注意不要找假高频,这样绝对能找到暑期
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务