Amazon Interview Question
Software Engineer / Developers/* 26-bit mask i.e 1-bit for each character from 'a' to 'z' */
void FindRepeartedCharacters(char *S)
{
if( S == NULL )
return ;
else
{
int len = strlen(S);
int i=0;
int MASK:26 = 0; // bit-filed
while(i < len -1 )
{
if ( alpha(S[i] )
{
if( S[i] >= 'A' && S[i]<='Z')
{
S[i] = lower(S[i]);
}
if( MASK & (1<< (S[i] - 'a')) )
{
printf("\n %c is repeated", S[i]);
}
else
{
MASK | = 1<< (S[i] - 'a') ;
}
}
else
{
printf("\n wrong input ");
exit(0);
}
i++;
}
}
}
/* 52-bit mask i.e 2-bit for each character from 'a' to 'z' */
/* 0,1st bits for 'a'. 2,3rd bits for 'b' ... */
/* if two bits are 1 for a character , then character is repeated */
void FindRepeartedCharacters(char *S)
{
if( S == NULL )
return ;
else
{
int len = strlen(S);
int i=0;
int MASK:52 = 0; // bit-filed
while(i < len -1 )
{
if ( alpha(S[i] )
{
if( S[i] >= 'A' && S[i]<='Z')
{
S[i] = lower(S[i]);
}
if( MASK & (1<< (S[i] - 'a')*2) )
{
MASK | = 1<< ((S[i] - 'a')*2 + 1 ) ;
}
else
{
MASK | = 1<< (S[i] - 'a')*2 ;
}
}
else
{
printf("\n wrong input ");
exit(0);
}
i++;
}// end of while
i=0;
while(i<26)
{
if( (MASK & 1<<2*i) && (MASK & 1<<(2*i + 1) ) )
{
printf("\n %c is repeated \n", i + 'a' );
}
}
}
}
If you find any bug in my code , please let me know
Hey googler, could you please clarify the question... with Sample input and Sample output
- Crime_Master_GoGo December 14, 2010