Python Program to print all permutations of a given string

A permutation, also called an “arrangement number” or “order, ” is a rearrangement of the elements of an ordered list S into a one-to-one correspondence with S itself. A string of length n has n! permutation.
Source: Mathword(http://mathworld.wolfram.com/Permutation.html)

Below are the permutations of string ABC.
ABC ACB BAC BCA CBA CAB

Recommended: Please solve it on “PRACTICE ” first, before moving on to the solution.

Python

filter_none

edit
close

play_arrow

link
brightness_4
code

# Python program to print all permutations with
# duplicates allowed
  
def toString(List):
    return ''.join(List)
  
# Function to print permutations of string
# This function takes three parameters:
# 1. String
# 2. Starting index of the string
# 3. Ending index of the string.
def permute(a, l, r):
    if l == r:
        print toString(a)
    else:
        for i in xrange(l, r + 1):
            a[l], a[i] = a[i], a[l]
            permute(a, l + 1, r)
            a[l], a[i] = a[i], a[l] # backtrack
  
# Driver program to test the above function
string = "ABC"
n = len(string)
a = list(string)
permute(a, 0, n-1)
  
# This code is contributed by Bhavya Jain

chevron_right


Output:

ABC
ACB
BAC
BCA
CBA
CAB

By Using inbuilt Function

For finding the permutation of the given string we use the inbuilt function. You can use the itertools module which has a useful method called permutations(iterable[, r]). This method will return successive r length permutations of elements in the iterable as tuples. you’ll need to iterate over the function call and join the tuples.

filter_none

edit
close

play_arrow

link
brightness_4
code

# Python program to print all permutations
  
from itertools import permutations
print [''.join(p) for p in permutations('ABC')]
# This code is contributed by Vidit Varshney

chevron_right


Output:

['ABC', 'ACB', 'BAC', 'BCA', 'CAB', 'CBA']

Please refer complete article on Write a program to print all permutations of a given string for more details!




My Personal Notes arrow_drop_up

Improved By : viditvarshney

Article Tags :

3


Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.