[H-5]
Write function stringSubset(char *sub,
char *set)
that returns 1 if every character in the string *sub
is also contained in the string *set
; otherwise it returns 0. Every
char in *sub
must also be in *set
, but *set
may have additional characters. Both strings may have repeated characters. If
both strings are empty, or *sub
is empty, return 1. If only *set
is empty, return 0.
Here is a testing program:
/* 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) { } 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;