私が書いたコードは、T(N) = T(N-1)*N + O((N-1!)*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