#include <iostream>
#include <assert.h>
using namespace std;
int findFisrtUniqueChar(const char *str, char &ch)
{
assert(str != NULL);
unsigned int m=strlen(str);
unsigned int i;
unsigned int anCount[256];
memset(anCount, 0, sizeof(unsigned int) *256 );
for (i=0; i<m; i++)
{
anCount[(unsigned char)str[i]]++;
}
for (i=0; i<m; i++)
{
if (anCount[(unsigned char)str[i]] == 1)
{
ch= str[i];
return 0;
}
}
ch='\0';
return -1;
}
int main()
{
char *str1 = "afaccde";
char *str2="abaccdeff";
char *str3="abcdefggfedcba";
char ch;
if (findFisrtUniqueChar(str1,ch) == 0)
{
cout<<"The first Unique char in "<<str1<<" is: "<<ch<<endl;
}
else
{
cout<<str1<<" contains no unique char"<<endl;
}
cout<<endl;
if (findFisrtUniqueChar(str2,ch) == 0)
{
cout<<"The first Unique char in "<<str2<<" is: "<<ch<<endl;
}
else
{
cout<<str2<<" contains no unique char"<<endl;
}
cout<<endl;
if (findFisrtUniqueChar(str3,ch) == 0)
{
cout<<"The first Unique char in "<<str3<<" is: "<<ch<<endl;
}
else
{
cout<<str3<<" contains no unique char"<<endl;
}
return 0;
}