#include <iostream>
#include <cassert>
using namespace std;
bool g_flag[26];
void stringFilter( const char *pInputStr, long lInputLen, char *pOutputStr )
{
assert( pInputStr != NULL );
int i = 0;
if ( pInputStr == NULL || lInputLen <= 1 )
{
return;
}
const char *p = pInputStr;
while ( *p != '\0' )
{
if ( g_flag[(*p - 'a')] )
{
p++;
}else{
pOutputStr[i++] = *p;
g_flag[*p - 'a'] = 1;
p++;
}
}
pOutputStr[i] = '\0';
}
int main()
{
memset( g_flag, 0, sizeof(g_flag) );
char input[] = "abacacde";
char *output = new char[strlen( input ) + 1];
stringFilter( input, strlen( input ), output );
cout << output << endl;
delete output;
return(0);
}