所有代码均通过G++编译器测试,仅为练手纪录。
//面试题35:第一个只出现一次的字符。
//题目:在字符串中找出第一个只出现一次的字符。
// 如输入“abaccdeff”,则输出'b'。
//面试题35:第一个只出现一次的字符。
//题目:在字符串中找出第一个只出现一次的字符。
// 如输入“abaccdeff”,则输出'b'。
char FindFirstRepeatingChar(const string& strVal)
{
if(strVal.empty())
{
return '\0';
}
const int nTableSize = 256;
unsigned int hashTable[nTableSize] = { 0 };
const char *p = strVal.c_str();
while ('\0' != *p)
{
++hashTable[*(p++)];
}
p = strVal.c_str();
while ('\0' != *p)
{
if(1 == hashTable[*p])
{
return *p;
}
++p;
}
return '\0';
}
void TestFindFirstRepeatingChar()
{
string strVal = "abaccdeff";
LogInfo("FindFirstRepeatingChar:%c",FindFirstRepeatingChar(strVal));
}
ZhaiPillary
2017-01-07