题目
在字符串 s 中找出第一个只出现一次的字符。如果没有,返回一个单空格。 s 只包含小写字母。
思路
哈希表: 先遍历字符串 s
,使用哈希表统计 “各字符数量是否 >1; 再遍历字符串 s
,在哈希表中找到首个 “数量为 1 的字符”,并返回即可。
java代码如下:
class Solution{
public char firstUniqChar(String s){
HashMap<Character,Boolean> dic = new HashMap<>();
char[] sc = s.toCharArray();
for(char c : sc){
dic.put(c, !dic.containsKey(c));//如果哈希表中不包括键c,则向 dic 中添加键值对 (c, True) ,代表字符 c 的数量为 1,如果哈希表中包括键c,则修改键 c 的键值对为 (c, False) ,代表字符 c 的数量 >1
}
for(char c : sc){
if(dic.get(c)){
return c;//取出第一个为true的键c,即第一个只出现过一次的数字
}
}
return ' ';//返回‘ ’,代表字符串无数量为 1 的字符
}
}
算法流程: