给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。
案例:
s = “leetcode”
返回 0.
s = “loveleetcode”,
返回 2.
注意事项:您可以假定该字符串只包含小写字母。
import java.util.LinkedHashMap;
public class FirstUniqChar {
//方法1:直接LinkedHashMap
public int firstUniqChar(String s){
if(s==null||s.length()==0){
return -1;
}
LinkedHashMap<Character,Integer> map=new LinkedHashMap<>();
char[]chs=s.toCharArray();
for (int i = 0; i <chs.length ; i++) {
if(!map.containsKey(chs[i])){
map.put(chs[i],1);
}else{
map.put(chs[i],map.get(chs[i])+1);
}
}
//下标
int i = 0;
for (; i <chs.length ; i++) {
if(map.get(chs[i])==1){
return i;
}
}
return -1;
}
//方法2:字符第一次出现的位置==最后一次出现的位置,indexOf() 函数和 lastIndexOf()
public int firstUniqChar2(String s){
if(s==null||s.length()==0){
return -1;
}
for (int i = 0; i <s.length() ; i++) {
if(s.indexOf(s.charAt(i))==s.lastIndexOf(s.charAt(i))){
return i;
}
}
return -1;
}
}