Проверьте, является ли массив палиндромом - PullRequest
0 голосов
/ 19 марта 2019

Я не могу найти решение, как проверить, зеркальный ли массив?*

Длина массива: 3
Введите элемент номер 0: 1
Введите элемент номер 1: 2
Введите элемент номер 2: 1
[1, 2, 1]

Я получаю это в консоли, но теперь я не знаю, как сказать, зеркально ли оно или нет.

Ответы [ 3 ]

1 голос
/ 19 марта 2019

Я не уверен на 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();
    } 
0 голосов
/ 19 марта 2019

Вы можете проверить, является ли массив палиндромом, сравнив его с обращенной копией исходного массива.Использование ArrayUtils.reverse из общего достояния Apache:

int[] arrCopy = Arrays.copyOf(array, array.length);
ArrayUtils.reverse(arrCopy);
boolean isPalindrome = Arrays.equals(array, arrCopy);

Подробнее Как изменить массив int в Java?

0 голосов
/ 19 марта 2019

сделал небольшой фрагмент, если вы тестируете код внутри самого 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");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...