2016-06-11 102 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循环是不可能的。 –