剑指offer刷题笔记(3)——Java版本

剑指 Offer 50. 第一个只出现一次的字符

利用linkedhashmap的有序性质,遍历一次字符串,将每个字符的出现次数更新在map中,而后遍历map即可获取到第一个只出现一次的字符。

剑指offer刷题笔记(3)——Java版本
 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)。

上一篇:关于更改的javascript需要刷新


下一篇:javascript-复制“更改” EventListener函数