2016-06-11 33 views
0

我想知道如何以遞歸方式創建給定字符串的所有排列組合。可以說String a = "abcdefghijklmnopqrstxyz";在java中遞歸生成一個字符串的所有排列

我想使用遞歸以產生長度爲5(例如)從a串,

含義:

  • AAAAA
  • AAAAB
  • aaaba
  • aaaca
  • zabfg

在此先感謝。

+0

好的,你有問題嗎? –

+0

這是一個問題......如何僅使用遞歸創建所描述的排列。 – Efi

+0

隨着解決方案,只打印出長度爲5的結果 –

回答

1

首先,只需使用HashMap左右存儲所有唯一字符,然後將它們轉移到List,我們將調用字符,以便於使用。

你的遞歸方法建立在一個字符串上。當字符串長度達到5時,你就完成了,並且你想保留它。您可以返回字符串或將其存儲在全局列表中。

在這種情況下,假設您的列表被稱爲排列。

void generatePermutation(String current) { 
    if (current.length == 5) { 
     permutations.add(current); 
    } else { 
     for (int i = 0; i < chars.size(); i++) { 
      generatePermutation(current + chars.get(i)); 
     } 
    } 
} 
+0

謝謝,但我不允許使用循環,只有遞歸.. – Efi

+0

而且我必須生成所有可能的長度爲5的排列。在我給出的例子中有5^26排列。 – Efi

+0

沒有for循環是不可能的。 –