题目:在一个字符串(1<=字符串长度<=10000,全部由大写字母组成)中找到第一个只出现一次的字符,并返回它的位置。
思路:
代码:
public int FirstNotRepeatingChar(String str) {
if (str == null || str.equals("")) {
return -1;
}
char[] chars = str.toCharArray();
int[] a = new int['z' - 'A' + 1]; // 注意,A的ASCII码小,a的大,而且Z到a之间还有字符
for (char c : chars) {
a[c - 'A']++; // 出现一次,该字符对应的数量+1
}
char tag = ' ';
for (char c : chars) {
if (a[c - 'A'] == 1) {
tag = c;
break;
}
}
return str.indexOf(String.valueOf(tag));
}