Open In App

Python | All Permutations of a string in lexicographical order without using recursion

Last Updated : 11 Jul, 2022
Comments
Improve
Suggest changes
3 Likes
Like
Report

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. 

Output :

abc
acb
bac
bca
cab
cba

Method 2:

  • First we create a loop that will run n! ties where n is the length of the string as there will be n! permutations.
  • Every iteration prints the string and finds its next larger lexicographical permutation to be printed in the next iteration.
  • The next higher permutation is found as :-
  • Let the string is called str, find the smallest index i such that all elements in str[i…end] are in descending order.
  • If str[i…end] is the entire sequence, i.e. i == 0, then str is the highest permutation. So we simply reverse the entire string to get the smallest permutation which we consider as the next permutation.
  • If i > 0, then we reverse str[i…end].
  • Then we look for the smallest element in str[i…end] that is greater than str[i – 1] and swap its position with str[i – 1].
  • This is then the next permutation.

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

Time Complexity: O(n*n!)
Auxiliary Space: O(1)


Article Tags :
Practice Tags :

Similar Reads