牛客(34)第一个只出现一次的字符

//    题目描述
//    在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置
    public static int FirstNotRepeatingChar(String str) {
//        char[] chars = str.toCharArray();
//        int count = 0;
//        for (int i=0; i<chars.length;i++){
//            count = 0;
//            for (int j=0;j<chars.length;j++){
//                if (chars[i]==chars[j]){
//                    count++;
//                }
//            }
//            if (count == 1){
//                return i;
//            }
//        }
//        return -1;
        Map<Character,Integer> map = new HashMap<Character, Integer>();
        char[] chars = str.toCharArray();
        for (int i=0; i<chars.length;i++){
            if (map.containsKey(chars[i])){
                Integer integer = map.get(chars[i]);
                integer++;
                map.put(chars[i],integer);
            }else {
                map.put(chars[i],1);
            }
        }
        for (int i=0; i<chars.length;i++){
            Integer integer = map.get(chars[i]);
            if (integer == 1){
                return i;
            }
        }
        return -1;
    }

 

posted @ 2018-05-16 10:50  楷兵  阅读(149)  评论(0编辑  收藏  举报