题目:

在字符串 s 中找出第一个只出现一次的字符。如果没有,返回一个单空格。 s 只包含小写字母。
示例 1:

输入:s = “abaccdeff”
输出:’b’

示例 2:

输入:s = “”
输出:’ ‘

限制:

0 <= s 的长度 <= 50000

思路:

对字符串进行两次遍历。

在第一次遍历时,我们使用哈希映射统计出字符串中每个字符出现的次数。在第二次遍历时,我们只要遍历到了一个只出现一次的字符,那么就返回该字符,否则在遍历结束后返回空格。

题解:

class Solution {
    public char firstUniqChar(String s) {
        LinkedHashMap<Character,Integer> map = new LinkedHashMap();
        for(char c:s.toCharArray())
        {
            map.put(c,map.getOrDefault(c,0)+1);
        } 
        for(char c:map.keySet())
        {
            if(map.get(c) == 1)
            {
                return c;
            }
        }
        return ' ';
    }
}

补充:

Java HashMap getOrDefault() 方法
getOrDefault() 方法获取指定 key 对应对 value,如果找不到 key ,则返回设置的默认值。

getOrDefault() 方法的语法为:

hashmap.getOrDefault(Object key, V defaultValue)

Java HashMap的map.keySet() 方法
keySet() 方法返回映射中所有 key 组成的 Set 视图。

keySet() 方法的语法为:

hashmap.keySet()