给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。
方法一:HashMap
时间复杂度为O(
n
n
n);
存储每个字符出现的次数,返回第一个出现次数为1的字符串,若不存在则返回-1。
class Solution {
public int firstUniqChar(String s) {
Map<Character,Integer> map = new HashMap <Character,Integer>();
for(int i = 0;i < s.length();i++){
char ch = s.charAt(i);
map.put(ch, map.getOrDefault(ch, 0) + 1);
}
for (int i = 0; i < s.length(); ++i) {
if (map.get(s.charAt(i)) == 1) {
return i;
}
}
return -1;
}
}
方法二:循环
class Solution {
public int firstUniqChar(String s) {
if(s == null){
return -1;
}
for(int i = 0;i < s.length();i++){
int flag = 0;
for(int j = 0;j < s.length();j++){
if(s.charAt(i) == s.charAt(j)&&i != j){
flag = 1;
break;
}
}
if(flag == 0){
return i;
}
}
return -1;
}
}