管理一个hashmap {char : [出现的次数,最后一次出现的位置]}即可

import java.util.ArrayList;
import java.util.HashMap;
public class Solution {
    public static int FirstNotRepeatingChar(String str) {
        HashMap<String,ArrayList<Integer>> strMap = new HashMap<>();
        //{char : [出现的次数,最后一次出现的位置]}
        //遍历字符串
        if("".equals(str)) {
            return -1;
        }
        ArrayList<Integer> defaultArr = new ArrayList<>();
        defaultArr.add(0);
        defaultArr.add(0);
        for(int i=0;i<str.length();i++) {
            @SuppressWarnings("unchecked")
            ArrayList<Integer> tempArr= strMap.getOrDefault(""+str.charAt(i), (ArrayList<Integer>) defaultArr.clone());
            tempArr.add(0,tempArr.get(0)+1);
            tempArr.add(1,i);
            System.out.println(str.charAt(i)+" "+tempArr.get(0)+" "+tempArr.get(1));
            strMap.put(""+str.charAt(i), tempArr);
        }
        int min=str.length();

        for(String key : strMap.keySet()) {

            ArrayList<Integer> tempArr = strMap.get(key);
            int times = tempArr.get(0);
            int final_pos= tempArr.get(1);

            if(times==1) {
                if(min>final_pos) {
                    min = final_pos;
                }
            }
        }
        return min;
    }
}