剑指 Offer 50. 第一个只出现一次的字符
利用linkedhashmap的有序性质,遍历一次字符串,将每个字符的出现次数更新在map中,而后遍历map即可获取到第一个只出现一次的字符。
1 class Solution { 2 public char firstUniqChar(String s) { 3 LinkedHashMap<Character,Integer> hashMap = new LinkedHashMap<>(); 4 // 获取到字符串所有字符计数 5 for(char a : s.toCharArray()){ 6 if(hashMap.containsKey(a)){ 7 hashMap.put(a, hashMap.get(a)+1); 8 } 9 else{ 10 hashMap.put(a, 1); 11 } 12 } 13 // 拿出第一个只出现一次的字符进行返回 14 for(Map.Entry<Character, Integer> entry : hashMap.entrySet()) { 15 if(entry.getValue()==1){ 16 return entry.getKey(); 17 } 18 } 19 return ' '; 20 } 21 }View Code
时间复杂度O(n),空间复杂度O(1)。