Advertisement
Guest User

Untitled

a guest
Jul 27th, 2017
54
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.08 KB | None | 0 0
  1. void checkWord(char *currentWord, List *possible_letters, List *valid_permutations)
  2. {
  3. ListIterator *iter = list_get_iterator(possible_letters);
  4.  
  5. // Leaf in the recursion tree
  6. if (list_size(possible_letter == 0))
  7. {
  8. if(Dictionary::isValid(currentWord))
  9. list_prepend(valid_permutations, currentWord);
  10. }
  11.  
  12. for (iter = list_first(possible_letters); iter != list_end(possible_letters);
  13. iter = list_iterator_next(iter))
  14. {
  15. // stringAddLetter also allocates memory :)
  16. char *word = stringAddLetter(currentWord, *(char *)list_iterator_get_value(iter));
  17. checkWord(word, list_remove_item_at_iterator(possible_letter, iter), valid_permutations);
  18. }
  19.  
  20. if (currentWord)
  21. free(currentWord);
  22. }
  23.  
  24. List* generateValidPermutations(const char *word)
  25. {
  26. List *valid_permutations = list_new();
  27. int n = strlen(word), i = 0;
  28. List *possible_letters = list_new();
  29.  
  30. for (i = 0; i < n; i ++)
  31. list_append(possible_letters, word[i]);
  32.  
  33. checkWord(NULL, possible_letters, valid_permutations);
  34.  
  35. return valid_permutations;
  36. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement