Ejercicios cadenas resueltos

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

Publicado por

Avatar del usuario

Juan Pablo Fuentes

Formador de programación y bases de datos