public static int firstUniqChar(String s) { /* 自己想的是用map存,检查是否有重复 网上更好的答案是用一个数组存,用char的ascii码作为数组下标,记录出现几次,这样更加快 以后遇到对char操作的时候,如果要建立哈希表,记住可以用ASCII码作为下标建立长度256的数组 */// int res = -1;// Mapmap = new HashMap<>();// char[] ch = s.toCharArray();// for (int i = 0; i < ch.length; i++) {// if (map.containsKey(ch[i]))// map.put(ch[i],-1);// else// map.put(ch[i],i);// }// for (int i = 0; i < ch.length; i++) {// if (map.get(ch[i])!=-1)// {// res = i;// break;// }// }// return res; int[] ch = new int[256]; for (int i = 0; i < s.length(); i++) { ch[s.charAt(i)]++; } for (int i = 0; i < s.length(); i++) { if (ch[s.charAt(i)] ==1) return i; } return -1; }
以后遇到对char操作的时候,如果要建立哈希表,记住可以用ASCII码作为下标建立长度256的数组