题目描述
解题步骤
使用哈希表映射26个字母在数组中,此时注意不能使用hashMap,因为要找第一个元素,hashMap映射出的entry并不是有序的。
public char firstUniqChar(String s) {int[] array = new int[26];for (int i = 0; i < s.length(); i++) {array[s.charAt(i) - 'a'] += 1;}for (int i = 0; i < s.length(); i++) {if (array[s.charAt(i) - 'a'] == 1) {return s.charAt(i);}}return ' ';}
但使用LinkedHashMap有序的hash集合可以实现。
/*** 有序的hashMap实现** @param s* @return*/public char firstUniqChar(String s) {LinkedHashMap<Character, Integer> map = new LinkedHashMap<>();for (int i = 0; i < s.length(); i++) {map.put(s.charAt(i), map.getOrDefault(s.charAt(i),0) + 1);}for (Map.Entry<Character, Integer> entry : map.entrySet()) {if (entry.getValue() == 1)return entry.getKey();}return ' ';}
