剑指 Offer 50. 第一个只出现一次的字符
在字符串 s 中找出第一个只出现一次的字符。如果没有,返回一个单空格。 s 只包含小写字母。
示例:
s = “abaccdeff”
返回 “b”
s = “”
返回 " "
限制:
0 <= s 的长度 <= 50000
核心:优化方案 链表哈希(有序哈希表),Boolean代替Integer
class Solution {
public char firstUniqChar(String s) {
char[] chars = s.toCharArray();
LinkedHashMap<Character,Boolean> map = new LinkedHashMap<>();
for (int i = 0; i < chars.length; i++) {
if (!map.containsKey(chars[i])){
map.put(chars[i],true);
}else {
map.put(chars[i],false);
}
}
Character res=' ';
Set<Map.Entry<Character, Boolean>> entries = map.entrySet();
for (Map.Entry<Character, Boolean> entry : entries) {
if (entry.getValue()){
res=entry.getKey();
break;
}
}
return res;
}
}