[leetcode]387. First Unique Character in a String

public static int firstUniqChar(String s) {
        /*
        自己想的是用map存,检查是否有重复
        网上更好的答案是用一个数组存,用char的ascii码作为数组下标,记录出现几次,这样更加快
        以后遇到对char操作的时候,如果要建立哈希表,记住可以用ASCII码作为下标建立长度256的数组
         */
//        int res = -1;
//        Map<Character,Integer> map = new HashMap<>();
//        char[] ch = s.toCharArray();
//        for (int i = 0; i < ch.length; i++) {
//            if (map.containsKey(ch[i]))
//                map.put(ch[i],-1);
//            else
//                map.put(ch[i],i);
//        }
//        for (int i = 0; i < ch.length; i++) {
//            if (map.get(ch[i])!=-1)
//            {
//                res = i;
//                break;
//            }
//        }
//        return res;
        int[] ch = new int[256];
        for (int i = 0; i < s.length(); i++) {
            ch[s.charAt(i)]++;
        }
        for (int i = 0; i < s.length(); i++) {
            if (ch[s.charAt(i)] ==1)
                return i;
        }
        return -1;
    }

 

 以后遇到对char操作的时候,如果要建立哈希表,记住可以用ASCII码作为下标建立长度256的数组
posted @ 2018-01-05 17:19  stAr_1  阅读(208)  评论(0编辑  收藏  举报