好的,所以我有一个方法需要接收一个充满 的数组ints
,然后对照它的镜像检查它,看看它匹配的最大镜像是什么。所以例如我有 array [7, 1, 2, 9, 7, 2, 1]
,它可以匹配的最大数组是 2,在[1, 2]
.
现在我把它分成3种方法。一个接受数组,另一个反转数组并返回它(mirrorArray
)。第三个是计算匹配(groupCount
)的数组的大小。这是我到目前为止所拥有的:
public int maxMirror(int[] nums) {
int[] revArray = mirrorArray(nums);
return groupCount(nums, revArray);
}
private int[] mirrorArray(int[] nums) {
int[] newArray = new int[nums.length];
for (int i = nums.length-1, j = 0; i >= 0; i--, j++) {
newArray[j] = nums[i];
}
return newArray;
}
private int groupCount(int[] aFor, int[] bRev) {
int maxCount = 0;
int groupSize = 1;
//get aFor value
for (int i = 0; i < aFor.length; i++) {
int[] tempA = Arrays.copyOfRange(aFor, 0, groupSize);
//loop through bRev and check for matches
for (int j = 0; j < bRev.length; j++) {
int[] tempB = Arrays.copyOfRange(bRev, j, j+groupSize);
if (Arrays.equals(tempA, tempB)) {
maxCount = tempA.length;
}
}
groupSize++;
}
return maxCount;
}
它在某处的第 3 种方法中失败(返回 1 而不是 2),我很困惑为什么我的循环没有返回我想要的。任何帮助将不胜感激。