First Unique Character in a String
Given a string s, find the first non-repeating character in it and return its index. If it does not exist, return -1.
Example 1:
Input: s = “leetcode”
Output: 0
Example 2:
Input: s = “loveleetcode”
Output: 2
Example 3:
Input: s = “aabb”
Output: -1
Constraints:
1 <= s.length <= 105
s consists of only lowercase English letters.
//我觉得解法可以,这样子超时了,可能是因为split()的原因,太菜了,不知道具体原因;
public int firstUniqChar(String s) {
Character currentChar;
int location = -1;
String temp = s + "\n";
for (int i = 0; i < s.length(); i++) {
currentChar = s.charAt(i);
String[] str = temp.split(currentChar.toString());
if (str.length <= 2) {
location = i;
break;
}
}
return location;
}
//参考了别人的解法,AC代码
先用map记录字符出现次数,再查找;
public int firstUniqChar(String s) {
int location = -1;
Map<Character, Integer> map = new HashMap<>();
for (int i = 0; i < s.length(); i++) {
if (map.containsKey(s.charAt(i))) {
map.put(s.charAt(i), map.get(s.charAt(i)) - 1);
} else {
map.put(s.charAt(i), 1);
}
}
for (int j = 0; j < s.length(); j++){
if(map.get(s.charAt(j))==1){
location = j;
break;
}
}
return location;
}