剑指No.50_第一个只出现一次的字符
- 题目:在字符串 s 中找出第一个只出现一次的字符。如果没有,返回一个单空格。 s 只包含小写字母。
示例:s = “abaccdeff”
返回 “b”
s = “”
返回 " "
- 采用有序哈希表储存
java中的LinkedHashMap提供有序哈希表,在为数组元素去重的同时保证插入顺序
public char firstUniqCharWay(String s) {
LinkedHashMap<Character, Integer> map = new LinkedHashMap<>();
for (int i = 0; i < s.length(); i++){
char temp = s.charAt(i);
if (!map.containsKey(temp)){
map.put(temp, 1);
}else {
map.put(temp, map.get(temp) + 1);
}
}
for (Map.Entry<Character, Integer> entry : map.entrySet()){
if (entry.getValue() == 1)
return entry.getKey();
}
return ' ';
}