题目:求任意一个字符串的全排列组合,例如a='123',输出 123,132,213,231,312,321。(暂时假定字符串没有重复)
思路:递归,固定第一个数,后面的交换,递归过程可以看作两个数相互交换。
代码:
def sort0(ori_list):
if len(ori_list) == 0:
return []
res = sort1(ori_list)
return res
def sort1(get_list):
if len(get_list)<=1:
return get_list
res = []
for i in range(len(get_list)):
now_i = get_list[i]
get_l = sort1(get_list[:i] + get_list[i+1:])
for j in get_l:
tmp = now_i + j
res.append(tmp)
# res = set(res) # 有些要求排序,需要先转set
return res
a = ['a' , 'b' , 'c','d']
res = sort0(a)
print(res)