簡體   English   中英

迭代解決方案: - 查找字符串排列

[英]Iterative solution for :- Finding String permutations

我閱讀了這個簡單而優雅的python解決方案,用於查找給定字符串的所有排列。 它是遞歸的。 基於此,我嘗試在python中實現迭代解決方案。

以下是我的代碼。 但它僅適用於3個字符串:(試圖看看遞歸基本情況條件和遞歸條件如何轉換為迭代(非遞歸)任何指針都有助於使迭代解決方案工作。(基於此算法或任何其他)

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")   

您可以使用堆棧將每個遞歸轉換為迭代。 但在這種情況下,由於算法非常簡單,因此更簡單。

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

對於遞歸到迭代的更一般轉換,使用堆棧讀取此內容

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM