Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在一个数组文件中间识别回文并在一个新文件中打印出回文 我试图创建代码来读取文件并识别整数数组中间的回文,即5、8、6、11、22、33、44、33、22、11 6 6。我被困在如何去做这件事上,我在网上做的研究只有从开始到结束完全回文的数组的解决方案,即11 22 33 44 22 11_Java_Arrays_Palindrome - Fatal编程技术网

Java 如何在一个数组文件中间识别回文并在一个新文件中打印出回文 我试图创建代码来读取文件并识别整数数组中间的回文,即5、8、6、11、22、33、44、33、22、11 6 6。我被困在如何去做这件事上,我在网上做的研究只有从开始到结束完全回文的数组的解决方案,即11 22 33 44 22 11

Java 如何在一个数组文件中间识别回文并在一个新文件中打印出回文 我试图创建代码来读取文件并识别整数数组中间的回文,即5、8、6、11、22、33、44、33、22、11 6 6。我被困在如何去做这件事上,我在网上做的研究只有从开始到结束完全回文的数组的解决方案,即11 22 33 44 22 11,java,arrays,palindrome,Java,Arrays,Palindrome,并打印出新文件中的回文 我在网上所做的研究只有从开始到结束都是完全回文的数组的解决方案,即11 22 33 44 22 11 以下是代码的文件,以防打印不正确: 下面是可以合并到Swing代码中的java代码。它找出第一个最长的回文,然后停止 import java.util.Arrays; public class Palindrome { public static void main(String[] args){ int[] arr = {5, 8, 6, 11

并打印出新文件中的回文

我在网上所做的研究只有从开始到结束都是完全回文的数组的解决方案,即11 22 33 44 22 11

以下是代码的文件,以防打印不正确:


下面是可以合并到Swing代码中的java代码。它找出第一个最长的回文,然后停止

import java.util.Arrays;

public class Palindrome {
    public static void main(String[] args){
        int[] arr = {5, 8, 6, 11, 22, 33, 44, 33, 22, 11, 6, 7};
        int[] arr2 = {1,0,2};
        int[] arr3 = {2};
        int[] arr4 = {};

        System.out.println(Arrays.toString(findPalindrome(arr)));
        System.out.println(Arrays.toString(findPalindrome(arr2)));
        System.out.println(Arrays.toString(findPalindrome(arr3)));
        System.out.println(Arrays.toString(findPalindrome(arr4)));
    }

    public static int[] findPalindrome(int[] arr) {
        if (arr == null) return null;
        int start = 0;
        int end = arr.length;
        if (end <= 1) {  // no need to check just return as it is
            return arr;
        }
        for (int offset = 0; offset < arr.length; offset++) {
            for (int j = 0; j <= offset; j++) {
                if (isPalindrome(arr, start + j, end - offset + j)) {
                    return Arrays.copyOfRange(arr, start + j, end - offset + j);
                }
            }
        }
        return null;
    }
    public static boolean isPalindrome(int[] arr, int start, int end){
        end = end - 1;
        if (start == end) {
            return false;  // when reduced to a single element return false
        }
        int endPoint = (end - start + 1)/2;
        for (int i = 0; i < endPoint; i++){
            if (arr[start + i] != arr[end - i]) {
                return false;
            }
        }
        return true;
    }
}


请删除与问题无关的任何代码,并努力正确设置其余代码的格式。
import java.util.Arrays;

public class Palindrome {
    public static void main(String[] args){
        int[] arr = {5, 8, 6, 11, 22, 33, 44, 33, 22, 11, 6, 7};
        int[] arr2 = {1,0,2};
        int[] arr3 = {2};
        int[] arr4 = {};

        System.out.println(Arrays.toString(findPalindrome(arr)));
        System.out.println(Arrays.toString(findPalindrome(arr2)));
        System.out.println(Arrays.toString(findPalindrome(arr3)));
        System.out.println(Arrays.toString(findPalindrome(arr4)));
    }

    public static int[] findPalindrome(int[] arr) {
        if (arr == null) return null;
        int start = 0;
        int end = arr.length;
        if (end <= 1) {  // no need to check just return as it is
            return arr;
        }
        for (int offset = 0; offset < arr.length; offset++) {
            for (int j = 0; j <= offset; j++) {
                if (isPalindrome(arr, start + j, end - offset + j)) {
                    return Arrays.copyOfRange(arr, start + j, end - offset + j);
                }
            }
        }
        return null;
    }
    public static boolean isPalindrome(int[] arr, int start, int end){
        end = end - 1;
        if (start == end) {
            return false;  // when reduced to a single element return false
        }
        int endPoint = (end - start + 1)/2;
        for (int i = 0; i < endPoint; i++){
            if (arr[start + i] != arr[end - i]) {
                return false;
            }
        }
        return true;
    }
}