一个只出现一次的字符

题目:

在字符串 s 中找出第一个只出现一次的字符。如果没有,返回一个单空格。

示例:

s = "abaccdeff"
返回 "b"

s = ""
返回 " "
 

限制:

0 <= s 的长度 <= 50000

 

 

解答:
暴力方式,对每个字符,比较后面是否存在相同的,复杂度O(N^2);采用哈希表方式,使用LinkedHashMap可以在返回的时候降低遍历成本;

 1 class Solution {
 2     public char firstUniqChar(String s) {
 3         if(s.length() == 0 || s == null){
 4             return ' ';
 5         }
 6         Map<Character, Boolean> map = new LinkedHashMap<>();
 7         for(Character ch : s.toCharArray()){
 8             if(map.containsKey(ch)){
 9                 map.put(ch, false);
10             }else{
11                 map.put(ch, true);
12             }
13         }
14         for(Map.Entry<Character, Boolean> entry : map.entrySet()){
15             if(entry.getValue()){
16                 return entry.getKey();
17             }
18         }
19         return ' ';
20     }
21 }

 

posted @ 2020-05-08 22:16  heaven夏  阅读(141)  评论(0编辑  收藏  举报