проверить, является ли массив палиндромом или нет, просто указав в качестве параметра индекс - PullRequest
0 голосов
/ 18 февраля 2020
import java.util.Scanner;

public class Palindrome1 {

    public static boolean palindrome(int[] num, int index) {
        //write the logic here

            int length = num.length;
            int end = --length;

            if (length == 0 || length == 1)
                return true;

            if (index >= end)
               return true;

            if(num[index]!=num[end])
                return false;

            return palindrome(num, index+1);
    }


    public static void main(String args[]) {
        Scanner sc = new Scanner(System.in);
        int num[] = new int[5];
        for(int i=0; i< 5;i++)
            num[i]=sc.nextInt();
        boolean answer =palindrome(num, 0);
        System.out.println(answer);
    }
}

Легко, если бы у меня было конечное значение индекса, где я мог бы автоматически уменьшить значение. Однако с помощью только индекса, как мы можем решить это? Помните, я не должен менять количество параметров для метода isPalindrome.
Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 18 февраля 2020

Вычтите index из end тоже

int end = --length;

end -= index;

, чтобы проверить соответствующий индекс с обоих концов

public static boolean isPalindrome(int[] num, int index) {
    int length = num.length;
    int end = --length;
    end -=index;

    print(num, index, end);

    if (length == 0 || length == 1)
        return true;

    if (index >= end)
        return true;

    if(num[index]!=num[end])
        return false;

    return isPalindrome(num, index+1);
}

private static void print(int num[], int index, int end) {
    for (int i = 0; i < num.length; i++) {
        if(i == index || i == end)
            System.out.print("["+num[i]+"]");
        else
            System.out.print("_,");
    }

    System.out.println();
}

Выход

[1]_,_,_,[1]
_,[2]_,[2]_,
_,_,[3]_,_,
true
0 голосов
/ 18 февраля 2020

С https://www.geeksforgeeks.org/program-to-check-if-an-array-is-palindrome-or-not/

class GfG { 

    static void palindrome(int arr[], int n) 
    { 
        // Initialise flag to zero. 
        int flag = 0; 

        // Loop till array size n/2. 
        for (int i = 0; i <= n / 2 && n != 0; i++) { 

            // Check if first and last element are different 
            // Then set flag to 1. 
            if (arr[i] != arr[n - i - 1]) { 
                flag = 1; 
                break; 
            } 
        } 

        // If flag is set then print Not Palindrome 
        // else print Palindrome. 
        if (flag == 1) 
            System.out.println("Not Palindrome"); 
        else
            System.out.println("Palindrome"); 
    } 

    // Driver code. 
    public static void main(String[] args) 
    { 
        int arr[] = { 1, 2, 3, 2, 1 }; 
        int n = arr.length; 

        palindrome(arr, n); 
    } 
} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...