第一个只出现一次的字符
原创大约 1 分钟
题目:
在字符串 s 中找出第一个只出现一次的字符。如果没有,返回一个单空格。 s 只包含小写字母。
示例:
输入:s = "abaccdeff"
输出:'b'
输入:s = ""
输出:' '
思考:
提示
使用 Map 统计,key 为 s 中的每个字符,val 为 Boolean,代表只是否出现了一次
因为 Map 是无序的,还需要循环 char 数组,返回第一次只出现一次的字符
题解:
class Solution {
public char firstUniqChar(String s) {
HashMap<Character,Boolean> map = new HashMap<>();
char[] chars = s.toCharArray();
for (char c : chars){
map.put(c,!map.containsKey(c));
}
for (char c : chars){
if (map.get(c)) return c;
}
return ' ';
}
}思考:
提示
- 也可以使用有序的 Map,LinkedHashMap,它按照插入顺序排序
题解:
class Solution {
public char firstUniqChar(String s) {
Map<Character,Boolean> map = new LinkedHashMap<>();
char[] chars = s.toCharArray();
for (char c : chars){
map.put(c,!map.containsKey(c));
}
for (Map.Entry<Character,Boolean> m : map.entrySet()){
if (m.getValue()) return m.getKey();
}
return ' ';
}
}