在字符串 s 中找出第一个只出现一次的字符。如果没有,返回一个单空格。 s 只包含小写字母。
示例:
s = "abaccdeff"
返回 "b"s = ""
返回 " "
限制:
0 <= s 的长度 <= 50000
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/di-yi-ge-zhi-chu-xian-yi-ci-de-zi-fu-lcof
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
class Solution {
public char firstUniqChar(String s) {
LinkedHashMap<Character,Boolean> list = new LinkedHashMap<>();
for (char c : s.toCharArray()) {
if(list.containsKey(c)){
list.replace(c,false);
}else{
list.put(c,true);
}
}
for (Map.Entry<Character, Boolean> characterBooleanEntry : list.entrySet()) {
if(characterBooleanEntry.getValue()){
return characterBooleanEntry.getKey();
}
}
return ' ';
}
}
重点,第一个,只出现一次。
找出第一个说明结果需要有先后顺序,而且每个字符还需要标记其是否只出现一次。
① 简单的办法
可以使用一个数组,每个字符都有其对应的ASCII码,那么就可以使用这个字符作为数组下标,遍历字符串,存入数组值。然后遍历字符串,数组中第一个值为1的为第一个只出现一次的字符。
② 使用数据结构的方法
使用map,map的数据结构为key-value类型,类似于数组的下标对应的值,但是map适用性与可扩展性更强一点。代码如上。
专注力,提升专注力是提升学习效率做好的方法。例如听课时,可以边听边重复老师说的某个关键词,带着问题去看书学习,多问几个问什么。就像是在射箭时,有了一个明确的靶心,你就可以把全部精力放到这个靶心上,更少地走神。
走神并不代表你没有专注,注意到了自己走神并且能够迅速把自己的注意力拉回来,让自己重新专注于这个事情,不断反复不断训练,专注的时间自然会越来越长。
专注也与自身精力,身体健康有很大的关系,所以要多运动。