生成两个字符串列表之间的所有唯一1-1映射(Java)

时间:2015-05-19 17:39:03

标签: java algorithm loops recursion nested-loops

如何在两个列表之间生成一组所有可能的1-1映射。我希望每个映射都是唯一的,但我不太关心计算时间(蛮力可能很好)。列表可以是不同的大小,或者我们可以用空值填充较短的列表。

Example:
List A = [x, y] (or [x, y, null])
List B = [1, 2, 3] 

Results would be something like:
[[1x,2y,3],
[1x,2,3y],
[1y,2x,3],
[1y,2,3x],
[1,2y,3x],
[1,2x,3y]]

有一种简单的方法(最好用Java)吗?列表可以是任何大小(和不同大小)。

由于

1 个答案:

答案 0 :(得分:0)

您的预期输出基本上只是List AList B的所有可能排列的组合。

listPermutations
    input: list a , list b

    list result

    //add nulls to b until b reaches the length of a
    extend(b , length(a))

    for list p in permutations(b)
        add(result , combine(a , p))

    return result