Una possibile soluzione:
codice:
#include <stdio.h>
#include <ctype.h>
int main()
{
int k, x, y;
char c;
char a[256];
char str[55] = "Babbo";
char str1[55];
char str2[55];
for ( k = 0; k < 256; k++ )
a[k] = 0;
k = 0;
while ( 1 )
{
if ( str[k] == '\0' )
break;
c = tolower(str[k]);
a[c] += 1;
++k;
}
x = y = 0;
for ( k = 0; k < 256; k++ )
{
if ( a[k] > 1 )
{
str1[x++] = k;
}
else if ( a[k] == 1 )
{
str2[y++] = k;
}
}
str1[x] = '\0';
str2[y] = '\0';
printf("\n\nCaratteri multipli: %s\n", str1);
printf("\n\nCaratteri singoli: %s\n", str2);
return 0;
}
Una migliore soluzione, dal punto di vista della velocità di esecuzione, potrebbe essere quella di utilizzare un alberio binario di ricerca.