题目链接:https://www.nowcoder.com/practice/1c82e8cf713b4bbeb2a5b31cf5b0417c?tpId=13&&tqId=11187&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking

  思路:直接遍历数组,使用哈希的方式来记录每一个字符出现的次数,然后再对数组进行遍历,如果遍历到只出现一次的字符我们就可以将它的位置记录下来,然后跳出循环即可。

import java.util.*;

public class Solution {
    public int FirstNotRepeatingChar(String str) {
        if(str == null || str.length() == 0) return -1;
        char[] chars = str.toCharArray();
        int n = chars.length;
        Map<Character, Integer> map = new HashMap<>();
        for(int i = 0; i < n; ++ i) {
            if(map.get(chars[i]) == null) {
                map.put(chars[i], 1);
            } else {
                map.put(chars[i], map.get(chars[i]) + 1);
            }
        }
        int ans = -1;
        for(int i = 0; i < n; ++ i) {
            if(map.get(chars[i]) == 1) {
                ans = i;
                break;
            }
        }
        return ans;
    }
}