通过一系列字符排列

时间:2010-07-20 03:11:58

标签: java arrays unique combinations

假设您需要发现'n'个不同字符的所有可能排列,例如'a','b','c'。你能建议我用来完成这项工作的算法吗?一般来说,你会怎么做呢?

2 个答案:

答案 0 :(得分:1)

有一个Java实现here

答案 1 :(得分:1)

让'Perms'成为找到的排列集合,'Used'是当前所选字符的列表。

从集合S中找出n个字符的排列:

  1. 如果n = 0,则Used是置换。将其添加到Perms并返回。
  2. 对于S中的每个字符C:
    1. 从S中删除C并将其附加(或推送)到U。
    2. 从S中查找n-1个字符的排列。
    3. 删除(或弹出)U的结尾并将C添加到S.
  3. 当您从找到n个字符的排列返回时,Perms包含所有可能的排列。

    注意,这都是使用集合和列表完成的。有更轻量级的替代品,但这些结构使步骤更直接,所以我使用它们。