讨论/《初级算法》 - 字符串中的第一个唯一字符/
《初级算法》 - 字符串中的第一个唯一字符

这样要快些

        // 一个数组记录 出现多次的元素
        // 一个二位数组记录 只出现一次的元素 及其索引
        boolean[] exists = new boolean[26];
        int[] first = new int[26];
        Arrays.fill(first,-1);
        char[] arr = s.toCharArray();
        for (int i = 0; i < arr.length; i++) {
            if (!exists[arr[i] - 'a']) {
                if (first[arr[i] - 'a'] != -1) {
                    first[arr[i] - 'a'] = -1;
                    exists[arr[i]-'a'] = true;
                }else {
                    first[arr[i] - 'a'] = i;
                }
            }
        }
        // 遍历 first[] 数组
        int limit = arr.length;
        for (int i : first) {
            if (i != -1) {
                limit = Math.min(i, limit);
            }
        }
        return limit == arr.length ? -1 : limit;
1
展开全部 39 讨论