python2.7
算法思路:
n个元素的全排列=(n-1个元素的全排列)+(另一个元素作为前缀);
出口:如果只有一个元素的全排列,则说明已经排完,则输出数组;
不断将每个元素放作第一个元素,然后将这个元素作为前缀,并将其余元素继续全排列;
"""
f(a,b,c,d,......n) = a+f(b,c,d......n) & b+f(a,c,d......n) & c+f(a,b,d......n)...... n+f(a,b,c,d......n-1)
"""
#coding:utf-8
def string_to_array(s):
if len(s) ==0:
return []
else:
return arrangement(list(s))
def arrangement(array_s):
if len(array_s) == 0:
return [[]] #如果要排列的列表为空,返回一个空列表
else:
result = []
for i in array_s:
#获得子集变量,将所有元素赋值给temp
temp = array_s[:]
temp.remove(i)
for j in arrangement(temp):
result.append([i]+j)
return result
print(string_to_array('abc'))