В настоящее время я пытаюсь написать проверку палиндрома в Java, которая нечувствительна к регистру. Я проверил другие темы, но ни один из них, похоже, не решил мою проблему.Java palindrome checker - нечувствительный к регистру
Вот мой код:
import java.util.Scanner;
public class Homework5_2 {
public static void main(String[] args) {
boolean flag = true; //palindrome or not
Scanner console = new Scanner(System.in);
System.out.print("Enter one or more words: ");
String s = console.next();
//checks if string contains spaces
if (s.matches(".*\\s+.*")) {
s = s.replaceAll("\\s+","");
}
s = s.toLowerCase();
int stringLength = s.length();
int index = 0;
//checks the string from both sides going towards the middle
for (int i=0;i<stringLength/2;i++) {
index = stringLength-i-1;
if (!(s.charAt(i) == s.charAt(index))) {
flag = false;
}
}
if (flag == true) {
System.out.println("The string is a palindrome!");
} else {
System.out.println("The string is not a palindrome!");
}
}
}
При вводе строки типа «Os SO», выход в неверен, так как строка не сообщается, как палиндром. Проблема, похоже, коррелирует с пробелами, так как одна и та же строка правильно сообщается как палиндром, если в нем нет пробелов. Мне очень интересно понять недостаток этого кода, любая помощь будет очень оценена!