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 inPythonusing methods like inbuilt functions andrecursion.
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 withbuilt-in Python libraries.
Pythonimportitertoolss="GFG"li=[''.join(p)forpinitertools.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 eachtuplep 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.
Pythondefpermute(s,s2):iflen(s)==0:print(s2,end=' ')returnforiinrange(len(s)):char=s[i]left_s=s[0:i]right_s=s[i+1:]rest=left_s+right_spermute(rest,s2+char)s1="GFG"s2=""permute(s1,s2)
OutputGFG 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.