Reputation: 1145
Problem: Find all the different ways to arrange a string E.G. 123 can be arranged--123, 132, 213, 231, 321, 312
So I honestly have no idea how to go about engineering the solution to this problem, as I have not done any official Data Structures and Algorithms courses, but I came up with a more mathematical solution that I was able to turn into code:
if __name__ == '__main__':
string = 'ABCD'
count = 0
for first in string:
if first is not string[0]:
print()
for second in string:
if second is first:
continue
for third in string:
if third in [second, first]:
continue
for fourth in string:
if fourth in [third, second, first]:
continue
count += 1
print(str(first)+str(second)+str(third)+str(fourth), end=', ')
print('\n{} possible combinations'.format(count))
but I have to manually add or remove for-loops depending on the size of the string. What methodology should I use to go about this problem
Upvotes: 1
Views: 86
Reputation: 11
there is actually a very simple solution, only by using the itertools library;
from itertools import permutations
answer = [''.join(perm) for perm in permutations(s)]
That gives you a list of all the different permutations of s, e.g.
s = 'abc'
Then the answer would be:
answer = ['abc', 'acb', 'bac', 'bca', 'cab', 'cba']
Upvotes: 1
Reputation: 647
You want to find all the permutations of the string. Python's standard library includes a function for this.
>>> from itertools import permutations
>>> list(permutations('123'))
[('1', '2', '3'), ('1', '3', '2'), ('2', '1', '3'), ('2', '3', '1'), ('3', '1', '2'), ('3', '2', '1')]
Upvotes: 1