O erro está na forma de lidar com espaços da string. O método trim() apenas remove os espaços no início e no final da string, mas não remove os espaços internos. No caso "socorram me subi no onibus em marrocos", os espaços internos permanecem, fazendo com que a retorno seja "false".
Código correto:
public class Main {
public static void main(String[] args) {
System.out.println(ehPalindromo("socorram me subi no onibus em marrocos")); // Saída: true
System.out.println(ehPalindromo("Java")); // Saída: false
}
public static boolean ehPalindromo(String palavra) {
String semEspacos = palavra.replace(" ", "").toLowerCase();
return new StringBuilder(semEspacos).reverse().toString().equalsIgnoreCase(semEspacos);
}
}