首页 > 解决方案 > 创建一个方法来反转数组 String[] 然后检查它是否是回文

问题描述

我必须创建两种方法。一个接受一个字符串数组并颠倒它们的顺序。使用assertArrayEquals测试,backwards方法通过。然后我必须创建一个方法来检查字符串数组是否是回文,但如果失败则测试。我想也许我在反向方法中搞砸了,但我测试了 12 种不同的方法。我可能真的很累,但是我在这里做错了什么?

public static String[] backwards(String[] array) {
    for (int index = 0; index < array.length / 2; index++) {
        String string = array[index];
        array[index] = array[array.length - index - 1];
        array[array.length - index - 1] = string;
    }
    return array;
}

public static boolean isPalindrome(String[] array) {
    if (array == backwards(array)) {
        return true;
    }
    return false;
}

标签: javaarrayspalindrome

解决方案


这段代码有两个问题:

#1 您正在就地编辑数组。因此,backwards 方法不仅返回一个反转的数组,它还改变了原始数组。

#2 您正在比较两个数组,==这将检查它是否是同一个实例。你可以Arrays.equals改用。

public static String[] backwards(String[] array) {
    String[] resArray = new String[array.length];
    for (int index = 0; index < array.length; index++) {
        resArray[index] = array[array.length - index - 1];
    }
    return resArray;
}

public static boolean isPalindrome(String[] array) {
    return Arrays.equals(array, backwards(array));
}

推荐阅读