1 题目描述
2 算法思路
算法:
- 初始化一个LinkedHashMap,注意此处的value 设置为Boolean,稍微优于integer
- 遍历字符串中所有的字符c
- 如果哈希表中不含c,就put(c,true)
- 如果已经包含了,就put(c,false)
- 由于是有序哈希表,记录了装入的顺序,因此直接返回最先加入的,value = true的字符即可
3 代码
class Solution {
public char firstUniqChar(String s) {
Map<Character,Boolean> dic = new LinkedHashMap<>();
char[] sc = s.toCharArray();
for(char c : sc){
dic.put(c,!dic.containsKey(c));
}
for(Map.Entry<Character,Boolean> d : dic.entrySet()){
if(d.getValue())
return d.getKey();
}
return ' ';
}
}