2013-08-14 5 views
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") 

答えて

12

スタックを使用した反復読み取りthis

+0

解決策をAndに説明したリンクをありがとう。 – goldenmean

+0

excellent.elegant – user2290820

+0

完璧で素敵な! – deeshank

関連する問題