全排列
描述
给定一个由不同的小写字母组成的字符串,输出这个字符串的所有全排列。
输入
输入只有一行,是一个由不同的小写字母组成的字符串,已知字符串的长度在2到8之间。
输出
输出这个字符串的所有排列方式,每行一个排列。要求字母序比较小的排列在前面。字母序如下定义:
已知S = s1s2…sk, T = t1t2…tk,则S < T 等价于,存在p (1 <= p <= k),使得s1= t1, s2= t2, …, sp - 1= tp - 1, sp< tp成立
样例
abc
abc
acb
bac
bca
cab
cba
难度
中等,递归
解题思路
代码
status_list = []
def permutations(arr, position, end):
if position == end:
#print(arr)
status_list.append(list(arr))
#print(status_list)
else:
for index in range(position, end):
arr[index], arr[position] = arr[position], arr[index]
permutations(arr, position+1, end)
arr[index], arr[position] = arr[position], arr[index]
def sortstring(status_list):
for i in range(len(status_list)):
stri = ''
for item in status_list[i]:
#print(item)
stri += str(item)
status_list[i] = stri
status_list.sort()
s = input()
arr=[]
for i in s:
arr.append(i)
permutations(arr, 0, len(arr))
sortstring(status_list)
#print(status_list)
for i in status_list:
print(i)