管理一个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; } }