387. First Unique Character in a String

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
class Solution {
public int firstUniqChar(String s) {
int[] charToIndexArray = new int[26];
Arrays.fill(charToIndexArray, -1);

int[] charToCountArray = new int[26];
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
int offset = c - 'a'; // 注意此处减去 a 而不是减去 0

charToCountArray[offset]++;
if (charToIndexArray[offset] == -1) {
charToIndexArray[offset] = i;
}
}

int minIndex = Integer.MAX_VALUE;
for (int i = 0; i < charToCountArray.length; i++) {
if (charToCountArray[i] == 1) {
minIndex = Math.min(minIndex, charToIndexArray[i]);
}
}

return minIndex == Integer.MAX_VALUE ? -1 : minIndex;
}
}

References

387. First Unique Character in a String