我正在检查输入的单词是否是回文。也就是说,它的反转版本与原版相同。这是我正在使用的方法:
//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。
答案 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;