public static void main(String[] args) { // Escribir una función que invierta el orden de los caracteres // de una cadena dada. invertir("hola")–>"aloh" String alreves=invertirCadena("cacahuete"); System.out.println(alreves); if (esPalindromo("Isaac no ronca así")) { System.out.println("Es palindromo"); } System.out.println(quitarAcentos("áéíóúàèìòùäëïöü")); // Saber si una cadena es un palíndromo // Se lee lo mismo al derecho que al revés // dabalearrozalazorraelabad // dabalearrozalazorraelabad // Sé dar la vuelta: Lo acabo de hacer // Sé quitar espacios: replace(" ", "") // quitar acentos que nos sustituya vocales acentuadas // por vocales sin acento // puedo reemplazar cada vocal acentuada por la sin acentuar // Tengo un problema: hay que encontrar el algoritmo // ¿Cómo lo hago yo? // Divide y vencerás: El problema grande se convierte // En problemas más pequeños } public static String quitarAcentos(String cadena) { String acentos="áéíóúàèìòùäëïöü"; String sinacentos="aeiou"; for(int i=0;i<acentos.length();i++) { cadena=cadena.replace(acentos.charAt(i), sinacentos.charAt(i%5)); // Aritmética modular } return cadena; } public static boolean esPalindromo(String cadena) { cadena=cadena.replace(" ",""); cadena=quitarAcentos(cadena); return cadena.equalsIgnoreCase(invertirCadena(cadena)); } public static String invertirCadena(String cadena) { // cacahuete -> eteuhacac // empiezo por el final, voy letra a letra y escribo cada letra // ¿Se empezar e ir letra a letra? Sí con un for // Se añadir esas letras a un resultado: sí, concatenando String res=""; for(int i=cadena.length()-1;i>=0;i--) { res+=cadena.charAt(i); } return res; }