您的位置:首页 > Web前端

【剑指offer】之第一个只出现一次的字符

2015-12-09 17:16 330 查看

题目描述:

在一个字符串中找到第一个只出现一次的字符。比如输入“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';
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: