题目描述:
▪输⼊的字符s=“ABC”,由字符A,B 和C 组成的全排列为
–[“ABC”, “ACB”, “BAC”, “BCA”, “CAB”, “CBA”]
解题思路:
▪不妨设求解原问题的函数为permutation(s)
▪如何将问题进行分解形成子问题,从而可以寻求朋友的帮助?
python 代码如下:
⚠️对于长度为n的字符串,共有n!个全排列,因此代码的时间复杂度为O(n!)
# -*- coding:utf-8 -*-
def permutation(str):
lenstr = len(str)
if lenstr < 2: #边界条件
return str
else:
result = []
for i in range(lenstr):
ch = str[i] #取出str中每一个字符
rest = str[0:i] + str[i+1:lenstr]
for s in permutation(rest): #递归
result.append(ch + s) #将ch与子问题的解依次组合
return result