5
私はthisの文字列のすべての順列を見つけるためのシンプルで洗練されたpython解を読んでいます。再帰的です。それに基づいて、私はPythonで反復的なソリューションを実装しようとしました。反復解法: - 文字列置換を見つける
以下は私のコードです。しかし、それは3つの文字列に対してのみ動作します:(スタックして、再帰基底ケース条件と再帰条件が反復的(非再帰的)になる方法を見てみようと思っているどんなポインタでも反復解を得ることができます。あなたは、スタックを使用しての繰り返しにすべての再帰を変換することができます。しかし、このアルゴリズムは非常に簡単であるため、この場合にはそれも簡単です。
def perms(word):
stack = list(word)
results = [stack.pop()]
while len(stack) != 0:
c = stack.pop()
new_results = []
for w in results:
for i in range(len(w)+1):
new_results.append(w[:i] + c + w[i:])
results = new_results
return results
への再帰のより一般的な変換のために他の)
def permutations_iter(word):
while True:
perms = []
result = []
char = word[0]
new_word = word[1:]
if len(new_word)==2:
perms = [new_word,''.join(reversed(new_word))]
for perm in perms:
#insert the character into every possible location
for i in range(len(perm)+1):
result.append(perm[:i] + char + perm[i:])
return result
if len(new_word)==2:
break;
#example code to call this iterative function
print permutations_iter("LSE")
解決策をAndに説明したリンクをありがとう。 – goldenmean
excellent.elegant – user2290820
完璧で素敵な! – deeshank