检查给定的单词是否为回文



我正在尝试编写一个方法来检查给定单词是否是回文,但到目前为止,它还不起作用。我怀疑错误在于if语句,并且您不将字符串等对象与==进行比较,而是将其与equals进行比较,对吗?然而,Java不允许我编写:if (firstHalf.charAt(i).equals(secondHalf.charAt(j))),那么我该怎么做才能使它工作呢?代码中是否存在其他错误?

public static boolean isPalindrome(String string) {
String firstHalf = string.substring(0, string.length() / 2);
String secondHalf = string.substring(string.length() / 2, string.length());
for (int i = 0; i <= firstHalf.length(); i++) {
for (int j = secondHalf.length(); j <= 0; j--) {
if (firstHalf.charAt(i) == secondHalf.charAt(j)) {
return true;
}
}
}
return false;
}

为什么不这样做?

public static boolean isPalindrome(String string){
StringBuilder sb = new StringBuilder(string);  
sb.reverse();  
return sb.toString().equals(string);
}  

您的角色测试是向后的。所有的比较都必须相等,字符串才能成为回文。

此外,不需要对String进行分割。您可以用两个索引对String进行逻辑拆分。

试试这个代码。

public static boolean isPalindrome(String string) {
int frontIndex = 0;
int backIndex = string.length() - 1;
while (frontIndex < backIndex) {
if (string.charAt(frontIndex++) != string.charAt(backIndex--)) {
return false;
}
}
return true;
}

您可以将每个字符设置为字符串,如下所示String s1 = "" + c1;并与CCD_ 7 进行比较

或者您可以使用Character类,它是基元character的包装器。这也将使您能够使用c1.equals(c2)

最新更新