Distinct permutations of a number - GeeksforGeeks

08 Jun, 2021
Given an integer N, the task is to print all distinct permutations of the number N.
Examples:
Input: N = 133Output: 133 313 331Explanation: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 = 7668Output: 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.
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 permutationsdef 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 permutationsdef 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 NN = 7668 # Function call to find all# distinct permutations of NuniquePermutations(N)
7668 7686 7866 6768 6786 6678 6687 6876 6867 8766 8676 8667
 
Time Complexity: O(N * N!)Auxiliary Space: O(N * N!)
ruhelaa48
number-digits
permutation
Combinatorial
Mathematical
Mathematical
permutation
Combinatorial
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Comments
Old Comments
Find the Number of Permutations that satisfy the given condition in an array
Split array into subarrays at minimum cost by minimizing count of repeating elements in each subarray
Ways to sum to N using Natural Numbers up to K with repetitions allowed
Number of Simple Graph with N Vertices and M Edges
Largest substring with same Characters
Program for Fibonacci numbers
C++ Data Types
Set in C++ Standard Template Library (STL)
Coin Change | DP-7
Merge two sorted arrays