敲黑板的知识点:
- ASCII中大写字母在小写字母前面
- ASCII中大写字母的范围是65-90
- ASCII中小写字母的范围是97-122
- ASCII中大写字母和小写字母之间有6个字符
因此熟悉了上面的规律之后,可以使用一个长度为26+26+6 = 58的数组作为哈希表,但是如果记不住呢,那就像下面这样写:
public class Solution {
public int FirstNotRepeatingChar(String str) {
int[] a = new int[26];
int[] b = new int[26];
for (char c : str.toCharArray()) {
if (Character.isUpperCase(c)) {
a[c-'A']++;
} else {
b[c-'a']++;
}
}
int i = 0;
for (char c : str.toCharArray()) {
if (Character.isUpperCase(c)) {
if (a[c-'A'] == 1) return i;
} else {
if (b[c-'a'] == 1) return i;
}
i++;
}
return -1;
}
} 
京公网安备 11010502036488号