在字串 s 中找出第一個只出現一次的字元。如果沒有,返回一個單空格。 s 只包含小寫字母。
s = "abaccdeff" 返回 "b" s = "" 返回 " "
雜湊表法
class Solution {
public char firstUniqChar(String s) {
HashMap<Character,Boolean> map = new HashMap<>();
for(int i = 0;i < s.length(); i++){
//這裏的想法很巧妙,第一次插入就是 true,否則是 false
map.put(s.charAt(i),!map.containsKey(s.charAt(i)));
}
for(int i = 0;i < s.length();i++){
if(map.get(s.charAt(i)))return s.charAt(i);
}
return ' ';
}
}
有序雜湊表
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 ' ';
}
}
此程式碼複製貼上大佬的程式碼。