题目描述
在字符串 s 中找出第一个只出现一次的字符。如果没有,返回一个单空格。 s 只包含小写字母。
示例
思路1
如果一个字符首次出现indexOf和最后一次出现lastIndexOf的位置相同,说明只出现了一次
从左到右遍历即可得到第一个不重复出现的数字
class Solution {
public char firstUniqChar(String s) {
if(s.length() == 0) return ' ';
for(int i = 0; i < s.length(); i++) {
char temp = s.charAt(i);
if(s.indexOf(temp) == s.lastIndexOf(temp)) return temp;
}
return ' ';
}
}
思路2
采用哈希
class Solution {
public char firstUniqChar(String s) {
Map<Character, Boolean> hm = new HashMap<>();
for(int i = 0; i < s.length(); i++) {
char ch = s.charAt(i);
hm.put(ch, !hm.containsKey(ch));
}
for(int i = 0; i < s.length(); i++) {
char ch = s.charAt(i);
if(hm.get(ch)) return ch;
}
return ' ';
}
}