问题重述:
题目:在字符串中找出第一个只出现一次的字符。如输入“abaccdeff”,则输出b.
思路解析:
我们可以建立一个hash表,大小位256(因为char有256中可能),然后遍历字符串,在hash表中,以遍历到的字符的ASCII值作为下标,将对应位置的值加1。
然后第二次从头遍历字符串,判断以当前字符串的ASCII值位下标,在hash表对应位置的值是否为1,如果为1,返回当前字符。
代码实现:
char FirstNotRepeatingChar(string str) {
if(str.empty())
return '\u0000';
unsigned int arr[256] = {0};
for(auto e:str)
{
arr[e]++;
}
for(int i = 0;i<str.size();++i)
{
if(arr[str[i]]==1)
return str[i];
}
return '\u0000';
}