提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
题目描述
在字符串 s 中找出第一个只出现一次的字符。如果没有,返回一个单空格。 s 只包含小写字母。
示例:
s = “abaccdeff”
返回 “b”
s = “”
返回 " "
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/di-yi-ge-zhi-chu-xian-yi-ci-de-zi-fu-lcof
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
解题过程
解题思路
用一个Map来保存字符–>true或false的键值对。逐字符遍历字符串,当前字符已经存在Map中则其对应的值设为false,尚不存在则设为true。遍历结束则不重复的字符都以键值对的形式(值为true)保存在Map中。下一次循环遍历字符串,在Map中只要第一次判定值为false,返回该键。
class Solution {
public char firstUniqChar(String s) {
HashMap<Character, Boolean> map = new HashMap<>();
for(int i = 0; i < s.length(); i++){
if(map.containsKey(s.charAt(i))){//已经包含了该字符
map.put(s.charAt(i), false);
}else{
map.put(s.charAt(i), true);
}
}
for(int i = 0; i < s.length(); i++){
if (map.get(s.charAt(i))){
return s.charAt(i);
}
}
return ' ';
}
}
总结
暂时没有总结,待续。。。