题目描述
在一个字符串(1<=字符串长度<=10000)中找到第一个只出现一次的字符的位置。若为空串,返回-1。位置索引从0开始。
算法思想
(1)字符一共只有256种情况。对应原整型值分别为0-255
(2)可以采用长度为256的数组来表示每个字符出现的次数,如hash[256],hash[a]对应于hash[97],表示字母a出现的次数。
(3)遍历一次,统计个数,遍历第二次,查看哪个第一次出现一次。
代码实现
public int FirstNotRepeatingChar(String str){
if(str == null)
return -1;
int hash[] = new int[256];
char arr [] = str.toCharArray();
for(int i = 0; i< arr.length; i++)
hash[arr[i]] = hash[arr[i]] + 1;
for(int i = 0; i< arr.length; i++)
if(hash[arr[i]] == 1)
return i;
return -1;
}