Distinct permutations of a number
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:
- Traverse the list and add each element to the string s.
- After traversing, convert the string to an integer.
- Append this integer to permuteList.
- 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!)