The following code generates all the permutations for a string:
def permutations(word):
if len(word)<=1:
return [word]
#get all permutations of length N-1
perms=permutations(word[1:])
char=word[0]
result=[]
#iterate over all permutations of length N-1
for perm in perms:
#insert the character into every possible location
for i in range(len(perm)+1):
result.append(perm[:i] + char + perm[i:])
return result
Can you explain how it works? I don't understand the recursion.
The algorithm is:
The base case for the recursion is a single letter. There is only one way to permute a single letter.
Worked example
Imagine the start word is bar
.
b
.ar
. This gives ar
and ra
.b
in every location:
ar
-> bar
, abr
, arb
ra
-> bra
, rba
, rab