Python | All Permutations of a string in lexicographical order without using recursion
Write a python program to print all the permutations of a string in lexicographical order.
Examples:
Input : python Output : hnopty hnopyt hnotpy hnotyp hnoypt ...... ytpnho ytpnoh ytpohn ytponh Input : xyz Output : xyz xzy yxz yzx zxy zyx
Method 1:
Using the default library itertools function permutations.
permutations function will create all the permutations of a given string and then we sort the result to get our desired output.
from itertools import permutations def lexicographical_permutation( str ): perm = sorted (''.join(chars) for chars in permutations( str )) for x in perm: print (x) str = 'abc' lexicographical_permutation( str ) |
chevron_right
filter_none
Output :
abc acb bac bca cab cba
Method 2:
# import library from math import factorial def lexicographical_permutations( str ): # there are going to be n ! permutations where n = len(seq) for p in range (factorial( len ( str ))): print (''.join( str )) i = len ( str ) - 1 # find i such that str[i:] is the largest sequence with # elements in descending lexicographic order while i > 0 and str [i - 1 ] > str [i]: i - = 1 # reverse str[i:] str [i:] = reversed ( str [i:]) if i > 0 : q = i # find q such that str[q] is the smallest element # in str[p:] such that str[q] > str[i - 1] while str [i - 1 ] > str [q]: q + = 1 # swap str[i - 1] and str[q] temp = str [i - 1 ] str [i - 1 ] = str [q] str [q] = temp s = 'abcd' s = list (s) s.sort() lexicographical_permutations(s) |
chevron_right
filter_none
Output :
abcd abdc acbd acdb adbc adcb bacd badc bcad bcda bdac bdca cabd cadb cbad cbda cdab cdba dabc dacb dbac dbca dcab dcba
Attention geek! Strengthen your foundations with the Python Programming Foundation Course and learn the basics.
To begin with, your interview preparations Enhance your Data Structures concepts with the Python DS Course.