反向阵列算法

时间:2013-07-07 20:18:45

标签: java arrays

我正在检查输入的单词是否是回文。也就是说,它的反转版本与原版相同。这是我正在使用的方法:

//Change word to char array and reverse array.
//Change char array back to String. Checks if word and reversed string are equal
public boolean isAPalindrome(){
    char[] charArray = word.toCharArray();
    for(int i = 0; i < (charArray.length/2); i++){
        char temp = charArray[i];
        charArray[i] = charArray[charArray.length - 1 - i];
        charArray[charArray.length - 1 - i] = temp;
    }

    if(word.equals(charArray.toString()))
        return true;
    else 
        return false;
}

当我进入赛车时,程序在应该为真时返回false。

3 个答案:

答案 0 :(得分:5)

这对评论来说太长了,但不是真正的解决方案。我只会发布一个提示,让你自己找到解决方案,因为你会自己学习更多,而不是复制/粘贴:

char[] chars = {'a', 'b', 'c'};
System.out.println(chars.toString());
// prints something like: [C@18c28a
System.out.println(new String(chars));
// prints abc

因为在数组上实现toString()的方式。

答案 1 :(得分:1)

无需创建临时数组来执行此操作。尝试:

public boolean isPalindrome(String word) {
    int len = word.length();
    for(int i=0;i<len/2;i++) {
        if (word.charAt(i)!=word.charAt(len-i-1)) {
            return false;
        }
    }
    return true;
}

答案 2 :(得分:1)

String word = "racecar";
            char[] charArray = word.toCharArray();
            for(int i = 0; i < (charArray.length/2); i++){
                char temp = charArray[i];
                charArray[i] = charArray[charArray.length - 1 - i];
                charArray[charArray.length - 1 - i] = temp;
            }

            if(word.equals(new String(charArray))) // please change here.
                return true;
            else 
                return false;