程序代码:
#include <stdio.h>
#include <string.h>
void FoundChar( char *pStr )
{
int i , len , num = 1 ;
char mapOfChar[256] = {0} ;
int numOfChar[256] = {0} ;
char orderOfChar[256] = {0} ;
len = (int)strlen( pStr ) ;
for( i = 0 ; i < len ; ++i )
{
if( !mapOfChar[pStr[i]] )
{
mapOfChar[pStr[i]] = num ;
orderOfChar[num] = pStr[i] ;
numOfChar[num] = 1 ;
num++ ;
}
else
{
numOfChar[mapOfChar[pStr[i]]]++ ;
}
}
for( i = 1 ; i < num ; ++i )
{
if( numOfChar[i] == 1 )
break ;
}
printf("%c\n", orderOfChar[i] ) ;
}
int main()
{
char s[1001] ;
scanf("%s", s ) ;
FoundChar( s ) ;
return 0 ;
}
只扫描一次原字符串,双重哈希