思路1:
转换为字符数组,找到每一个字符,然后逐个扫描,这里有几种情况:
1.如果处理当前这个index之外还有相等的,说明不是
2.如果index是最后一个了,还没有找到除了本身之外的相等的,说明就是
public int firstUniqChar(String s) {
if(s.length()==1){
return 0;
}
char[] ch=s.toCharArray();
boolean flag =true;
for(int i=0;i<ch.length;i++){
flag =true;
for(int j=0;j<ch.length;j++){
if(i==j){
if(i==ch.length-1){
return i;
}else{
continue;
}
}
if(ch[i]==ch[j]){
flag =false;
break;
}
}
if(flag){
return i;
}
}
return -1;
}
思路2:
1.判断某个字符是否唯一出现的字符,2找到最小的index一个唯一出现的字符
public static int firstUniqChar(String s) {
int start;
int end;
int result = s.length();
for(char ch='a';ch<='z';ch++){
//从a到z,都判断一下,是否在该字符串中只有一次,出现,因为如果是,那么从前往后和从后往前都是同一个index
start=s.indexOf(ch);
end =s.lastIndexOf(ch);
if(start==end&&start!=-1){
//找到一个以后,记录这个下标,找到下一个,比较,如果下标更小,就记录这个
result=Math.min(result,start);
}
}
if(result==s.length()){
return -1;
}else{
return result;
}
}