题目描述
在字符串 s 中找出第一个只出现一次的字符。如果没有,返回一个单空格。 s 只包含小写字母。
示例:
s = “abaccdeff”
返回 “b”
s = “”
返回 " "
限制:
0 <= s 的长度 <= 50000
思路<哈希表、数组法>
数组中只出现一次的数字
和 第一个只出现一次的字符
都是同一类题,用到了哈希表
注意:
1.哈希表的格式,以及自带的方法,这个方法 containsKey
用来判断Map集合中是否包含指定的键名
2.String类型的判空方法isEmpty()
,以及求字符串的长度length()
解决方法
import java.util.*;
class Solution{
public static void main(args[]){
String str = "abcbba";
char ch;
int start,end;
for(int i=0; i<str.length(); i++){
ch = str.charAt(i); //获取索引i位置的字符
start = str.indexOf(ch); //获取字符ch第一次出现的索引
end = str.lastIndexOf(ch); //获取字符ch最后一次出现的索引
if(start == end){
System.out.println(ch);
break;
}
}
}
}
import java.util.HashMap;
class Solution {
public char firstUniqChar(String s) {
if(s.isEmpty())
return ' ';
HashMap<Character, Boolean> map = new HashMap<Character, Boolean>();
char c;
for(int i=0; i<s.length(); i++){
c = s.charAt(i);
if(map.containsKey(c)){
map.put(c, true);
}else{
map.put(c, false);
}
}
for(int j=0; j<s.length(); j++){
c = s.charAt(j);
if(map.get(c) == false){
return c;
}
}
return ' ';
}
}