Что бы ни случилось, ваш код всегда будет возвращать false. Поскольку вы не используете определенную переменную isFalse
в качестве оператора return
. Я взял ваш код, изменил последнюю часть, т.е. ваш цикл for, и преобразовал в цикл while, чтобы проверить равенство с обеих сторон, используя технику двойного указателя. Теперь это выглядит примерно так:
public static boolean isPalindrome(String s) {
String str = s.toLowerCase();
int count = 0;
char arr[] = new char[str.length()];
for(int i = 0;i<str.length();){
if(!Character.isLetter(str.charAt(i)) && !Character.isDigit(str.charAt(i))){
i++;
}else{
arr[count] = str.charAt(i);
count++;
i++;
}
}
int i = 0;
int j = count - 1;
while (i < j) {
System.out.println(arr[i] + " : " + arr[j]);
if (arr[i] != arr[j])
return false;
i++;
j--;
}
return true;
}
Попробуйте добавить их в свой код, и оно должно работать.