在Java中迭代生成字符串的所有置换对
我试图编写一个函数,这样给定n个字符串,它会生成所有在Java中迭代生成字符串的所有置换对,java,iteration,permutation,Java,Iteration,Permutation,我试图编写一个函数,这样给定n个字符串,它会生成所有np2对这样的字符串。例如,如果我有[ab,bc,bd],它将生成[[ab,bc],[bc,ab],[ab,bd],[bd,ab],[bc,bd],[bd,bc]],不一定是按那个顺序生成的。我有一个杂乱无章的递归函数 private static void permutation(ArrayList<String> names, int pos, String[] pair, ArrayList<ArrayList<S
np2
对这样的字符串。例如,如果我有[ab,bc,bd]
,它将生成[[ab,bc],[bc,ab],[ab,bd],[bd,ab],[bc,bd],[bd,bc]]
,不一定是按那个顺序生成的。我有一个杂乱无章的递归函数
private static void permutation(ArrayList<String> names, int pos, String[] pair, ArrayList<ArrayList<String>> out) {
if (pos == names.size()) {
if(!names.get(0).equals(names.get(1))){
out.add(new ArrayList<String>(Arrays.asList(names.get(0), names.get(1))));
}
} else {
for (int i = 0 ; i < pair.length ; i++) {
names.add(pair[i]);
permutation(names, pos+1, pair, out);
}
}
}
私有静态无效置换(ArrayList名称、int-pos、字符串[]对、ArrayList-out){
if(pos==names.size()){
如果(!names.get(0).equals(names.get(1))){
add(新的ArrayList(Arrays.asList(names.get(0),names.get(1)));
}
}否则{
for(int i=0;i
但是当有超过6个字符串时,这会生成一个
堆栈溢出错误。有人能帮你写一个迭代方法吗?你不需要递归函数;两个嵌套循环就可以了
基本上,从0到n-1循环i以获得对的第一个元素;然后再次循环,将j从0循环到n-1,其中ij
,并取这对(i,j)
。(显然,将所有这些对放入out
集合中。)您不需要递归函数;两个嵌套循环就可以了
基本上,从0到n-1循环i以获得对的第一个元素;然后再次循环,将j从0循环到n-1,其中ij
,并取这对(i,j)
。(显然,将所有这些对放入out
集合。)