1.题目地址
2.题目描述
在字符串 s 中找出第一个只出现一次的字符。如果没有,返回一个单空格。 s 只包含小写字母。
示例 1:
输入:s = "abaccdeff"
输出:'b'
示例 2:输入:s = ""
输出:' '
限制:
0 <= s 的长度 <= 50000
3.思路
使用哈希表,key类型为char,value类型为Boolean。循环输入字符串s的每个字符,将其作为key值存入哈希表,若哈希表中之前并无该key值,则value值作为true存入;若哈希表中之前存在该key值,则value作为false存入。最后再遍历字符串的每个字符,若字符所对应的value值为true,则说明该字符只出现一次,将其返回。
力扣图示
4.代码
public char firstUniqChar(String s) {
HashMap<Character, Boolean> dic = new HashMap<Character, Boolean>();
char[] sc = s.toCharArray();
for (char c : sc) {
//如果表中存在key值,则存放false
dic.put(c, !dic.containsKey(c));
}
for (char c : sc) {
//获取key对应的value值
if (dic.get(c)) {
return c;
}
}
return ' ';
}