问题
输入一个字符串,给出该字符串所有的排列
问题分析
非常标准的排列问题,不考虑字符串重复的前提下共有n!种排列,基本思路为从字符串数组中依次取一个字符作为首字符,剩余字符串作为参数使用迭代的方式找出所有可能性
算法实现
# 输入一个字符串,给出该字符串所有的排列
# 复杂度O(n!)
def StringIteration(s):
data = []
if len(s) <= 1:
data.append(s)
return data
for k, v in enumerate(s):
subArr = "".join(s[:k] + s[(k+1):])
subStrs = StringIteration(subArr)
for item in subStrs:
data.append(v+item)
return data
if __name__ == '__main__':
s = 'abcde'
res = StringIteration(s)
print res, len(res)
网友评论