public class Solution {
    public int FirstNotRepeatingChar(String str) {
        // 使用两个长度为26的数组,统计每个字符出现的次数,然后再按顺序来一次,找到第一个只出现一次的。
        int[] number = new int[26];
        int[] lNumber = new int[26];
        int res = -1;
        for (int i = 0; i < str.length(); ++i) {
            int index = str.charAt(i) - 'a';
            if (index < 0) {
                index = str.charAt(i) - 'A';
                lNumber[index] += 1;
            } else {
                number[index] += 1;
            }
        }
            

        for (int i = 0; i < str.length(); ++i) {
            int index = str.charAt(i) - 'a';
            if (index < 0) {
                index = str.charAt(i) - 'A';
                if (lNumber[index] == 1) {
                    res = i;
                    break;
                }
            } else if (number[index] == 1) {
                res = i;
                break;
            }
        }
        return res;
    }
}