题目描述
在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写).
参考思路
经典的桶计数法。用一个数组来记录字符元素出现的次数,然后对字符串进行遍历(确保第一次出现,顺序进行查找),如果次数为1则直接返回;如果不存在则返回-1.
参考代码
public class Solution {
public int FirstNotRepeatingChar(String str) {
int[] counts = new int[58];//这边
for(int i = 0; i < str.length(); i++)
counts[str.charAt(i)-'A'] +=1;
for(int i = 0; i < str.length(); i++)
if(counts[str.charAt(i)-'A'] == 1)
return i;
return -1;
}
}