Melhorei o resolução do exercício 4 utilizando o método replaceAll() que recebe uma expressão regular ("[^a-zA-Z]") que substitui todos os caracteres que não são letras por "". A expressão inclusive substitui as letras com acentos pela sua equivalente sem acento, fazendo com que o método reconheça até palíndromos com pontuação.
public class Main {
public static void main(String[] args) throws IOException {
System.out.println(isPalindrome("Socorram-me, subi no ônibus em Marrocos")); // Saída: true
System.out.println(isPalindrome("Java")); // Saída: false
System.out.println(isPalindrome("Ovo")); // Saída: true
System.out.println(isPalindrome("O Cid é médico")); // Saída: true
}
public static boolean isPalindrome(String text) {
String formatedText = text.trim().replaceAll("[^a-zA-Z]", "").toLowerCase();
String invertedFormatedText = new StringBuilder(formatedText).reverse().toString();
return formatedText.equals(invertedFormatedText);
}
}
Obs.: A frase do primeiro exemplo está faltando o "Socorram-me" no inicio.