Skip to content
Related Articles

Related Articles

Improve Article

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
Recommended Articles
Page :