Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void checkWord(char *currentWord, List *possible_letters, List *valid_permutations)
- {
- ListIterator *iter = list_get_iterator(possible_letters);
- // Leaf in the recursion tree
- if (list_size(possible_letter == 0))
- {
- if(Dictionary::isValid(currentWord))
- list_prepend(valid_permutations, currentWord);
- }
- for (iter = list_first(possible_letters); iter != list_end(possible_letters);
- iter = list_iterator_next(iter))
- {
- // stringAddLetter also allocates memory :)
- char *word = stringAddLetter(currentWord, *(char *)list_iterator_get_value(iter));
- checkWord(word, list_remove_item_at_iterator(possible_letter, iter), valid_permutations);
- }
- if (currentWord)
- free(currentWord);
- }
- List* generateValidPermutations(const char *word)
- {
- List *valid_permutations = list_new();
- int n = strlen(word), i = 0;
- List *possible_letters = list_new();
- for (i = 0; i < n; i ++)
- list_append(possible_letters, word[i]);
- checkWord(NULL, possible_letters, valid_permutations);
- return valid_permutations;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement