Skip to content
Related Articles
Missing Permutations in a list
• Difficulty Level : Medium
• Last Updated : 07 Dec, 2018

Given a list of permutations of any word. Find the missing permutation from the list of permutations.

Examples:

```Input : Permutation_given[] = {"ABCD", "CABD", "ACDB",
"DACB", "BCDA", "ACBD", "ADCB", "CDAB",
"DABC", "BCAD", "CADB", "CDBA", "CBAD",
"ABDC", "ADBC", "BDCA", "DCBA", "BACD",
"BADC", "BDAC", "CBDA", "DCAB"};
Output : DBAC DBCA
```

## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

1) We create a set of all given strings.
2) And one more set of all permutations.
3) Finally return difference between two sets.

 `#include ``using` `namespace` `std;`` ` `void` `find_missing_strings(string Permutation_given[], ``size_t` `Size_Permutation_given)``{``    ``// vector "permutation" containing all``    ``// the permutation of input string``    ``vector permutations;`` ` `    ``// Here we can take any string``    ``// from the given list and do``    ``// the necessary permutation``    ``string input = Permutation_given;``    ``permutations.push_back(input);`` ` `    ``// In the loop we will store``    ``// all the permutations of the string``    ``// in the vector "permutation".``    ``while` `(``true``) {`` ` `        ``string p = permutations.back();`` ` `        ``// Getting next permutation of input string``        ``next_permutation(p.begin(), p.end());``        ``if` `(p == permutations.front())``            ``break``;`` ` `        ``permutations.push_back(p);``    ``}`` ` `    ``// vector containing all the``    ``// missing strings in permutation``    ``vector missing;`` ` `    ``// given_permutations contains the``    ``// permutation of the input string``    ``set given_permutations(Permutation_given, ``         ``Permutation_given + Size_Permutation_given);`` ` `    ``// Through the set difference we will get ``    ``// the missing words in vector missing``    ``set_difference(permutations.begin(), permutations.end(),``                                 ``given_permutations.begin(),``                                 ``given_permutations.end(), ``                                  ``back_inserter(missing));`` ` `    ``// printing all the missing string``    ``for` `(``auto` `i = missing.begin(); i != missing.end(); ++i)``        ``cout << *i << endl;``}`` ` `// Driver code``int` `main()``{``    ``string Permutation_given[] = {``        ``"ABCD"``, ``"CABD"``, ``"ACDB"``, ``"DACB"``,``        ``"BCDA"``, ``"ACBD"``, ``"ADCB"``, ``"CDAB"``,``        ``"DABC"``, ``"BCAD"``, ``"CADB"``, ``"CDBA"``,``        ``"CBAD"``, ``"ABDC"``, ``"ADBC"``, ``"BDCA"``,``        ``"DCBA"``, ``"BACD"``, ``"BADC"``, ``"BDAC"``,``        ``"CBDA"``, ``"DCAB"``    ``};`` ` `    ``// size of permutation list``    ``size_t` `Size_Permutation_given = ``                 ``sizeof``(Permutation_given) / ``                 ``sizeof``(*Permutation_given);`` ` `    ``find_missing_strings(Permutation_given, ``                    ``Size_Permutation_given);`` ` `    ``return` `0;``}`

Output:

```DBAC
DBCA
```

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.  To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

In case you wish to attend live classes with industry experts, please refer Geeks Classes Live

My Personal Notes arrow_drop_up