解题思路分析:首先将所有不同的字符存入hashset中,然后将重复与不重复的元素用key-value对区分开来,重复符号的value均为2,不重复符号的value均为1。然后将所有的value的键重新构成一个hashset,对这个hashset进行遍历,来观察位于字符串的第几个位置
学习函数:charAt(i) 函数 是获取字符串中i位置的字符
class Solution {
public int firstUniqChar(String s) {
int size=s.length();
Set set=new HashSet<>();
for(int i=0;i hm=new HashMap<>();
Character key=' ';
Integer value=0;
for (Character c:set) {
value=0;
key=c;
for (int i = 0; i < size; i++) {
if(c==s.charAt(i)){
value++;
}
if(value>1){
break;//一旦发现有两个重复出现时,已经没有必要统计
}
}
hm.put(key,value);//值只有1和2两种情况
}
//存放没有重复的字符
Set uniqArr =new HashSet<>();
if(hm.containsValue(1)){
//说明有不重复的字符
for (Character c:set) {
if(hm.get(c)==1){
uniqArr.add(c);
}
}
// int length=uniqArr.size();
int min=size-1;
int temp=0;
for (Character c:uniqArr) {
temp = s.indexOf(c);
if(temp<=min){
min=temp;
}
}
return min;
}
return -1;
}
}



