题目描述
在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写).
代码实现(果然我不适合优化代码,哈哈哈)
public class Solution {
public int FirstNotRepeatingChar(String str) {
if(str.length()==0)
return -1;
char c;
int[] counts = new int[52];
for(int i=0;i<str.length();i++){ //字符串中需要区分大小写
if(str.charAt(i)>='a'){
c = 'a';
counts[str.charAt(i)-c]++;
}else{
c = 'A';
counts[str.charAt(i)-c+26]++;
}
}
for(int i=0;i<str.length();i++){ //判断出现的个数时也需要区分大小写
if(str.charAt(i)>='a'){
c = 'a';
if (counts[str.charAt(i) - c] == 1){
return i;
}
}else{
c = 'A';
if (counts[str.charAt(i)-c+26] == 1){
return i;
}
}
}
return -1;
}
}