剑指 Offer 50. 第一个只出现一次的字符
在字符串 s 中找出第一个只出现一次的字符。如果没有,返回一个单空格。 s 只包含小写字母。
示例 1:
输入:s = “abaccdeff”
输出:‘b’
示例 2:
输入:s = “”
输出:’ ’
限制:
0 <= s 的长度 <= 50000
思路:
①使用map,键是字符,值是是否重复出现
②使用数组,记录字符出现的次数
相关知识点:
Map.containsKey():判断键是否存在
String.toCharArray():字符串转换成数组
String.charAt():获取指定位置字符
思路一:
class Solution {
public char firstUniqChar(String s) {
char[] chars = s.toCharArray();
HashMap<Character, Boolean> map = new HashMap<>();
for(char c:chars){
map.put(c,!map.containsKey(c));
}
for (char c:chars){
if (map.get(c)) return c;
}
return ' ';
}
}
思路二:
class Solution {
public char firstUniqChar(String s) {
char[] c=new char[26];
for (int i=0;i<s.length();i++){
c[s.charAt(i)-'a']++;
}
for (int i=0;i<s.length();i++){
if (c[s.charAt(i)-'a']==1)
return s.charAt(i);
}
return ' ';
}
}