我无法解决如何检查阵列是否镜像的问题
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int a=0 ;
System.out.print("Array length:");
int b= sc.nextInt();
int [] array = new int [b];
for(int i=0;i<b;i++) {
System.out.print("Type the number "+i+" element: ");
a=sc.nextInt();
array[i]=a;
}
System.out.println(Arrays.toString(array));
sc.close();
}
当我输入类似例如数组长度:3和我的数字是1 2 1
数组长度:3 输入数字0元素:1 输入数字1元素:2 输入数字2元素:1 [1,2,1]
我在控制台中得到了这个,但现在我不知道如果它是镜像的话怎么说。
我对你的镜像定义并不是100%肯定。但这将检测对称阵列。希望能帮助到你。
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int a=0 ;
System.out.print("Array length:");
int b= sc.nextInt();
int [] array = new int [b];
for(int i=0;i<b;i++) {
System.out.print("Type the number "+i+" element: ");
a=sc.nextInt();
array[i]=a;
}
System.out.println(Arrays.toString(array));
int l = (b - b%2)/2;
boolean mirrored = true;
for(int i=0;i<l;i++) {
if(array[i]!=array[array.length-1-i]) {
mirrored = false;
break;
}
}
if(mirrored) {
System.out.println("The array is mirrored!! Fantastic.");
}
sc.close();
}
如果您正在测试main本身的代码,那么我们会做一个小片段
int length = array.length;
boolean mirror = true;
for (int index = 0; index < array.length; index++) {
if(mirror) {
int start = array[index];
int end = array[--length];
if (length < index) {
break;
}
if (start != end) {
mirror = false;
}
}
}
if(mirror) {
System.out.println("is mirror");
}
else {
System.out.println("is not mirror");
}
您可以通过将数组与原始数组的反向副本进行比较来检查数组是否为回文数据。使用Apache commons的ArrayUtils.reverse
:
int[] arrCopy = Arrays.copyOf(array, array.length);
ArrayUtils.reverse(arrCopy);
boolean isPalindrome = Arrays.equals(array, arrCopy);