Answer S17
/* Puzzle S17 -- Determine if every character in one string is also in another */
#include <stdio.h>
#include <stdlib.h>
/* return 1 if every character in the string *sub is also contained in the string *set*/
int stringSubset( char const *sub, char const *set)
{
char const *p, *s;
for ( p=sub; *p; p++ )
{
for ( s=set; *s && *s != *p; s++);
if ( *s == '\0' ) return 0;
}
return 1;
}
int main(int argc, char *argv[])
{
char *trials[][2] =
{
{"a","a"},
{"a","ab"},
{"a","aaa"},
{"ab","ab"},
{"aaa","a"},
{"abc","abc"},
{"a","xyza"},
{"a","xyzaxyz"},
{"x","a"},
{"x","abc"},
{"ababab","abcxyz"},
{"aaabbbcccaaa","abc"},
{"aabbaabbaax","abc"},
{"xaabbaabbaa","abc"},
{"aabbxaabbaa","abc"},
{"aabbxaabbaa","abc"},
{"aabbxaaxbbaa","abc"},
{"empty set",""},
{"","abc"},
{"",""}
};
int j, loc ;
for ( j=0; j< sizeof(trials)/sizeof(trials[0]); j++ )
{
if ( stringSubset( trials[j][0], trials[j][1] ) )
printf("%s \tcontains only characters from %s\n",
trials[j][0], trials[j][1] );
else
printf("%s \tcontains extra characters than %s\n",
trials[j][0], trials[j][1] );
}
return 0;
}