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


京公网安备 11010502036488号