题目描述:
在一个字符串中找到第一个只出现一次的字符。比如输入“abacceff”,输出“b”。
分析:
/**
*
* 利用哈希表算法,扫描两次字符串,第一次记录相同位置的字符出现的次数,第二次找到第一个次数为1的字符并返回。时间复杂度为o(n)。
*/
private static char findChar(String str) {
char[] chars = getChars(str);
int[] hashtable = new int[256];
for(int i=0;i<chars.length;i++) {
int index = 0;
if(chars[i] >= 0)
index = chars[i];
else
index = chars[i] + 256;
hashtable[index] ++ ;
}
for(int i=0;i<chars.length;i++) {
int index = 0;
if(chars[i] >= 0)
index = chars[i];
else
index = chars[i] + 256;
if(hashtable[index] == 1)
return chars[i];
}
return '\0';
}