Related Articles

# Distinct permutations of a number

• Last Updated : 08 Jun, 2021

Given an integer N, the task is to print all distinct permutations of the number N.

Examples:

Input: N = 133
Output: 133 313 331
Explanation:
There are a total of 6 permutations, which are [133, 313, 331, 133, 313, 331].
Out of all these permutations, distinct permutations are [133, 313, 331].

Input: N = 7668
Output: 7668 7686 7866 6768 6786 6678 6687 6876 6867 8766 8676 8667

Approach: Follow the steps below to solve the problem:

• Initialize an empty string to store the equivalent string representation of N.
• Initialize a Map to convert each character of the string to an integer and store it as a list.
• Permute this list using built-in python functions itertools. permutations().
• Initialize another list, say newList.
• Traverse the permutations of the list and if the permutation(list) is not in newList then append this list to newList.
• Initialize an empty string, s = “” and another empty list say permuteList.
• Traverse the list newlist and for each list, perform the following operations:
• Print the values of permuteList as the possible distinct permutations.

Below is the implementation of the above approach:

## Python3

 `# Python3 program for the above approach` `from` `itertools ``import` `permutations` `# Utility function to print``# all distinct permutations``def` `uniquePermutationsUtil(permute):``  ` `    ``p ``=` `[]``    ` `    ``# Traverse the list permute[]``    ``for` `i ``in` `permute:``      ` `        ``# Convert this permutation to list``        ``permutelist ``=` `list``(i)``        ` `        ``# Append this list to p``        ``p.append(permutelist)` `    ``# Stores unique permutations``    ``newlist ``=` `[]``    ` `    ``# Traverse list p[]``    ``for` `i ``in` `p:``      ` `        ``# If permutation is``        ``# not in newlist``        ``if` `i ``not` `in` `newlist:``            ``newlist.append(i)` `    ``# Initialize empty list``    ``permutelist ``=` `[]``    ` `    ``# Traverse the list newlist[]``    ``for` `i ``in` `newlist:``      ` `        ``# Initialize empty string``        ``s ``=` `""``        ` `        ``# Traversing in element list``        ``for` `j ``in` `i:``          ` `            ``# Convert each``            ``# element to string``            ``s ``=` `s ``+` `str``(j)``            ` `        ``# Convert string to integer``        ``s ``=` `int``(s)``        ` `        ``# Append the unique``        ``# permutation to permutelist``        ``permutelist.append(s)``        ` `    ``# Print all distinct permutations``    ``print``(``*``permutelist)``    ` `# Function to print all``# distinct permutations``def` `uniquePermutations(N):``  ` `    ``# Stores equivalent string``    ``# representation of N``    ``num ``=` `str``(N)` `    ``# Convert each character to``    ``# integer and store in the list``    ``lis ``=` `list``(``map``(``int``, num))``    ` `    ``# Built in method to store all``    ``# permutations of the list``    ``permute ``=` `permutations(lis)``    ` `    ``# Print unique permutations``    ``uniquePermutationsUtil(permute)` `# Driver Code` `# Given value of N``N ``=` `7668` `# Function call to find all``# distinct permutations of N``uniquePermutations(N)`
Output:
`7668 7686 7866 6768 6786 6678 6687 6876 6867 8766 8676 8667`

Time Complexity: O(N * N!)
Auxiliary Space: O(N * N!)

Attention reader! Don’t stop learning now. Get hold of all the important mathematical concepts for competitive programming with the Essential Maths for CP Course at a student-friendly price. To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

My Personal Notes arrow_drop_up