【发布时间】:2011-07-04 01:51:54
【问题描述】:
我一直在尝试生成每个可能的 4 个字符串的列表,这些字符串可以由任何给定的字符集组成。我使用了一个函数从一组字符中生成每 4 个字符的组合,但每个字符只使用一次。例如,我需要使用给定字符集的所有可能组合:
String[] elements = {"a", "b", "c", "1", "2", "3"};
int[] indices;
CombinationGenerator x = new CombinationGenerator (elements.length, 4);
StringBuffer combination;
while (x.hasMore ()) {
combination = new StringBuffer ();
indices = x.getNext ();
for (int i = 0; i < indices.length; i++) {
combination.append (elements[indices[i]]);
}
System.out.println (combination.toString ());
}
使用 here 中的 CombinationGenerator 类, 这将返回每个唯一的 4 个字符组合,例如:
'abcd' , 'abc1', 'acb2', 'acb1'
但是,我想要使用给定字符创建的所有可能的字符串。例如:
'aaaa', 'aaab', 'abc1', 'aac1', '11c2'
我已经尝试了我能够找到或想出的所有递归和排列方法,但是除了生成上述所有组合,然后生成每个组合的每个排列之外,我很难获得任何进一步的方法,但我可以不知道如何使用重复字符创建一组组合。
任何帮助,甚至只是关于如何完成的理论都会有所帮助。
【问题讨论】:
标签: java combinations permutation