保留输入顺序的哈希表

第一个只出现一次的字符

http://www.nowcoder.com/questionTerminal/1c82e8cf713b4bbeb2a5b31cf5b0417c

出现次数,请考虑哈希表,在保留输入顺序时,请使用linkedHashMap(插入顺序和访问顺序)

图解如下:
图片说明

首次出现,Set.

    /**
     * 在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置,
     * 如果没有则返回 -1(需要区分大小写).(从0开始计数)
     * @param str 字符串
     * @return 第一个只出现一次的字符的位置
     */
    public int FirstNotRepeatingChar(String str) {
        if(str==null||str.length()==0){
            return -1;
        }
        Map<Character,Integer> dict=new LinkedHashMap<>();
        char[]cs=str.toCharArray();
        for(char c:cs){
            dict.put(c,dict.getOrDefault(c,0)+1);
        }
        char c='A';
        for(Map.Entry<Character,Integer> d:dict.entrySet()){
            if(d.getValue()>1){
                c=d.getKey();
                break;
            }
        }
        for(int i=0;i<cs.length;i++){
            if(cs[i]==c){
                return i;
            }
        }

        return 0;
    }
全部评论

相关推荐

Natrium_:这时间我以为飞机票
点赞 评论 收藏
分享
头像
11-09 17:30
门头沟学院 Java
TYUT太摆金星:我也是,好几个华为的社招找我了
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务