解法一:利用HashMap
1.如果s为空或者长度为0,返回' ';
2.将s转化为数组,然后将数组中元素分别放入hashmap中,key表示字符,value表示个数
3.然后判断字符对应的个数是否为1,若为1直接返回
class Solution {
public char firstUniqChar(String s) {
if(s.length()==0||s==null){
return ' ';
}
char[] str=s.toCharArray();
HashMap<Character,Integer> map=new HashMap<>();
for(Character i:str){
Integer count=map.get(i);
count=count==null?1:++count;
map.put(i,count);
}
for(int i=0;i<str.length;i++){
if(map.get(str[i])==1){
return str[i];
}
}
return ' ';
}
}
解法二:利用数组,因为数组比哈希快
字符往多了数按照扩展的ASCII码也就256个
class Solution {
public char firstUniqChar(String s) {
if(s.length()==0||s==null){
return ' ';
}
char[] str=s.toCharArray();
int[] count=new int[256];
for(char c:str){
count[c]++;
}
for(char c:str){
if(count[c]==1){
return c;
}
}
return ' ';
}
}