题目:
在字符串 s 中找出第一个只出现一次的字符。如果没有,返回一个单空格。 s 只包含小写字母。
示例:
输入:s = "abaccdeff"
输出:'b'
输入:s = ""
输出:' '
限制:
0 <= s 的长度 <= 50000
代码实现:
方法一:
使用 LinkedHashMap 进行存储,并返回第一个只出现一次的字符
class Solution {
public char firstUniqChar(String s) {
if (s.length() == 0) {
return ' ';
}
char[] chars = s.toCharArray();
LinkedHashMap<Character, Integer> map = new LinkedHashMap<>();
for (char c : chars) {
if (map.containsKey(c)) {
int num= map.get(c);
num += 1;
map.put(c, num);
} else {
map.put(c, 1);
}
}
for (char ss : map.keySet()) {
if (map.get(ss) == 1){
return ss;
}
}
return ' ';
}
}
方法二:
使用 String 的方法 indexOf() 和 lastIndexOf() 从头判断字符是否出现了两次,索引相同就是出现了两次
public static char firstUniqChar(String s) {
if (s.length() == 0) {
return ' ';
}
for (char ch : s.toCharArray()){
if (s.indexOf(ch) == s.lastIndexOf(ch)){
return ch;
}
}
return ' ';
}