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;
}