第一个只出现一次的字符
题目:
在字符串 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()
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Zhn&Blog!
评论