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",
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 codeint 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

My Personal Notes arrow_drop_up