我写的代码似乎用运行时间和空间的渐近测量看起来很糟糕我得到 T(N) = T(N-1)*N + O((N-1!)*N) 其中 N 是输入的大小。我需要建议优化它
由于这是一个基于算法的面试问题,我们需要在不使用任何库的情况下以最有效的方式实现逻辑
这是我的代码
def str_permutations(str_input,i):
if len(str_input) == 1:
return [str_input]
comb_list = []
while i < len(str_input):
key = str_input[i]
if i+1 != len(str_input):
remaining_str = "".join((str_input[0:i],str_input[i+1:]))
else:
remaining_str = str_input[0:i]
all_combinations = str_permutations(remaining_str,0)
for index,value in enumerate(all_combinations):
all_combinations[index] = "".join((key,value))
comb_list.extend(all_combinations)
i = i+1
return comb_list