//通过两个表的建立来完成本程序,int_FreqOfOccurTable标记每个字符的出现次数,
//int_TimeOfOccurTable标记每个字符的出现时间(最先出现的标记为1,未出现的标记为0)
char fun_SearchChar(char* pchar_param_Str)
{
int int_FreqOfOccurTable[256] = {0} ;
int int_TimeOfOccurTable[256] = {0} ;
int int_Time = 1 ; // 代表首次出现
while (*pchar_param_Str)
{
int_FreqOfOccurTable[*pchar_param_Str] += 1 ;
if (int_TimeOfOccurTable[*pchar_param_Str] == 0)
int_TimeOfOccurTable[*pchar_param_Str] = int_Time++ ;
pchar_param_Str++ ;
}
int int_TimeOfOccur = std::numeric_limits<int>::max() ;
char char_Find = 0 ;
for (int i = 0 ; i < 256; ++i)
{
if (int_FreqOfOccurTable[i] == 1)
if (int_TimeOfOccurTable[i] < int_TimeOfOccur)
{
int_TimeOfOccur = int_TimeOfOccurTable[i] ;
char_Find = i ;
}
}
return char_Find ;
}
int _tmain(int argc, _TCHAR* argv[])
{
system("title 查找字符串首个只出现一次的字符") ;
char char_Array[] = "ffedccaba" ;
std::cout << "待查找字符串为:" << char_Array << std::endl ;
std::cout << "该字符串中只出现一次的首个字符为:" << fun_SearchChar(char_Array) << std::endl ;
system("pause") ;
return 0;
}