Python | Permutation of a given string using inbuilt function
The task is to generate all the possible permutations of a given string. A permutation of a string is a rearrangement of its characters. For example, the permutations of “ABC” are “ABC”, “ACB”, “BAC”, “BCA”, “CAB”, and “CBA”. The number of permutations of a string with n unique characters is n! (factorial of n).
We can generate permutations of a string in Python using methods like inbuilt functions and recursion.
Using itertools.permutations
itertools module in Python provides a simple function called permutations that can generate all possible permutations of a string. This method is the easiest and most efficient, especially when working with built-in Python libraries.
import itertools
s = "GFG"
li = [''.join(p) for p in itertools.permutations(s)]
print(li)
Explanation:
- itertools.permutations(s) generates all possible permutations of the string s, returning each permutation as a tuple.
- ”.join(p) converts each tuple p into a string by concatenating its elements.
- list comprehension collects all the joined strings (permutations) into a list.
Using Recursion
Recursion is a method where a function calls itself to solve smaller parts of a problem. In the case of generating permutations, we can break down the problem by selecting one character at a time and recursively permuting the rest of the string. This approach is a bit more complex than using itertools.permutations, but it can be useful if we want more control over the process.
def permute(s, s2):
if len(s) == 0:
print(s2, end=' ')
return
for i in range(len(s)):
char = s[i]
left_s = s[0:i]
right_s = s[i+1:]
rest = left_s + right_s
permute(rest, s2 + char)
s1 = "GFG"
s2 = ""
permute(s1, s2)
Output
GFG GGF FGG FGG GGF GFG
Explanation:
- If the string s is empty, print the accumulated answer.
- For each character in s, remove the character and recursively permute the remaining characters while adding the character to answer.
- Call permute(s, answer) with the initial string and an empty answer to start generating permutations.