Given a string, write a function that uses recursion to output a list of all the possible permutations of that string.
For example, given s=’abc’ the function should return [‘abc’, ‘acb’, ‘bac’, ‘bca’, ‘cab’, ‘cba’]
Note: If a character is repeated, treat each occurence as distinct, for example an input of ‘xxx’ would return a list with 6 “versions” of ‘xxx’
Let’s think about what the steps we need to take here are:
def permute(s): output = [] if len(s) <= 1: output=[s] else: for i, let in enumerate(s): for perm in permute(s[:i]+s[i+1:]): output+=[let+perm] return output
permute('abc')
""" RUN THIS CELL TO TEST YOUR SOLUTION. """ from nose.tools import assert_equal class TestPerm(object): def test(self,solution): assert_equal(sorted(solution('abc')),sorted(['abc', 'acb', 'bac', 'bca', 'cab', 'cba'])) assert_equal(sorted(solution('dog')),sorted(['dog', 'dgo', 'odg', 'ogd', 'gdo', 'god'])) print ('All test cases passed.') # Run Tests t = TestPerm() t.test(permute)
All test cases passed.
Recommended: Introduction to Recursion
If you like my post please follow me to read my latest post on programming and technology.
Find the length of the longest absolute path to a file within the abstracted file…
You manage an e-commerce website and need to keep track of the last N order…
You are given a stream of elements that is too large to fit into memory.…
The formula for the area of a circle is given by πr². Use the Monte…
Given an integer k and a string s, write a function to determine the length…
There is a staircase with N steps, and you can ascend either 1 step or…