1 回答

TA貢獻1877條經驗 獲得超1個贊
您可以使用 equals 方法創建一個 DTO 類“Permutation”來比較正常數組和反向數組,并將每個 Permutation 保存Set在這樣的反向數組中,這樣反向數組將匹配為重復并被省略
...
Set<Permutation> permutations = new HashSet<>();
public void permute(int[] elements, int length) {
if(length == 1) {
for(int i = 0; i < length; i++) {
permutations.add(new Permutation(elements));
}
...
public class Permutation {
private Integer[] elements;
public Permutation(Integer... elements) {
this.elements = elements;
}
@Override
public int hashCode() {
return elements.length;
}
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
Permutation other = (Permutation) obj;
// reversed elements
List<Integer> revCurElements = Arrays.asList(this.elements);
Collections.reverse(revCurElements);
if (Arrays.equals(this.elements, other.elements) || Arrays.equals(revCurElements.toArray(new Integer[1]), other.elements)) {
return true;
}
return false;
}
}
添加回答
舉報