给定一个数组,打印出数组中所有非重复和非相同的排列。数组不包含重复元素。 例如:
String[] array = {"Cheese", "Pepperoni", "Black Olives", "Chicken"}
期望的示例输出:
无效:
只有一对输入。 [奶酪,意大利辣香肠]或[意大利辣香肠,奶酪]
private Map<Integer, List<String>> getPairs(String[] array) {
Map<Integer, List<String>> map = new HashMap<>();
int count = 0;
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array.length; j++) {
if (i == j)
continue;
ArrayList<String> list = new ArrayList<>();
list.add(array[i]);
list.add(array[j]);
map.put(count, list);
++count;
}
}
// System.out.println(map);
return map;
}
我的代码打印出重复的内容。你能帮忙吗?
答案 0 :(得分:4)
从以下内容更改内部for循环声明:
for (int j = 0; j < array.length; j++) {
到
for (int j = i + 1; j < array.length; j++) {
如果array
的元素不含重复,则可以避免奶酪,奶酪和#34; case(因为j
和i
永远不相等),以及&#34; Cheese,Pepperoni&#34;和#34;意大利辣香肠,奶酪&#34;因为j
永远不会少于i
。
(if (i == j) continue;
也是多余的)