
Vamos a desarrollar un algoritmo para saber si una palabra es palindromo en Java a partir de una frase dada. El programa completo identificará el palíndromo más pequeño y más grande dentro de la frase.
Un palíndromo es una palabra o frase que se lee igual de izquierda a derecha, que de derecha a izquierda, ejemplos:
Entrada: Ana y los seres fueron de paseo
Palíndromo más pequeño: Ana
Palíndromo más grande: seres
Claves
Implementaremos dos métodos clave:
- longitudPalindromo(): Esta función encuentra el palíndromo más corto y más largo entre las palabras de la frase recibida. Realizará llamadas a la función comprobarPalindromo() para verificar si cada palabra es o no un palíndromo y actualizará el resultado.
- comprobarPalindromo(): Esta función comprueba si una palabra recibida es un palíndromo. Simplemente devolverá verdadero o falso.
Función para saber si una cadena es palindromo en Java
La función comprobarPalindromo() nos va a servir para calcular si una cadena recibida es o no un palíndromo:
public static boolean comprobarPalindromo(String palabra)
{
int n = palabra.length();
palabra = palabra.toLowerCase();
for (int i = 0; i < n; i++, n--)
{
if (palabra.charAt(i) != palabra.charAt(n - 1))
return false;
}
return true;
}
Solución completa palíndromo en Java
El código siguiente implementa la solución completa. Analiza una frase y a partir de ella extrae tanto la palabra que sea el palíndromo más largo como el más corto.
public class Principal {
public static boolean comprobarPalindromo(String palabra)
{
int n = palabra.length();
palabra = palabra.toLowerCase();
for (int i = 0; i < n; i++, n--)
{
if (palabra.charAt(i) != palabra.charAt(n - 1))
return false;
}
return true;
}
public static void longitudPalindromo(int numPalabras, String palabras[])
{
int contador = 0;
String masPequenyo= "", masGrande = "";
for (int i = 0; i < numPalabras; i++) {
if (comprobarPalindromo(palabras[i])) {
contador ++;
if (contador == 1)
masPequenyo= masGrande = palabras[i];
else {
if (masPequenyo.length()
> palabras[i].length())
masPequenyo= palabras[i];
if (masGrande .length()
< palabras[i].length())
masGrande = palabras[i];
}
}
}
if (count == 0)
System.out.println("No se ha encontrado ningun palindromo");
else {
System.out.println("Palindromo mas pequenyo: "
+ masPequenyo);
System.out.println("Palindromo mas grande: "
+ masGrande );
}
}
public static void main(String[] args)
{
String frase= "Ana y los seres fueron de paseo";
String palabra = "";
String[] palabras = new String[100];
int numPalabras= 0;
frase= frase+ " ";
for (int i = 0; i < frase.length(); i++) {
if (frase.charAt(i) != ' ') {
palabra= palabra+ frase.charAt(i);
}
else {
palabras[numPalabras] = palabra;
numPalabras++;
palabra= "";
}
}
System.out.println("Frase : " + frase);
lengthPalindrome(numPalabras, palabras);
}
}
Recursos básicos Java
| Asunto | Descripción |
| Tutorial básico y sintaxis | Tutorial básico Java y sintaxis. Aprende los fundamentos del lenguaje. |
| Hilos (Threads) | Aprende a manejar hilos y las cuestiones básicas de la concurrencia |
| Funciones Lambda | Aquí te enseñamos las nociones más importantes para arrancas con funciones lambda |
| Palíndromos | Programa de ejemplo para el uso de palíndromos en Java. |
| Máquina Virtual de Java | Te explicamos el funcionamiento de la máquina virtual de java (Java Virtual Machine – JVM) |
| JDK, JRE y JVM | Diferencias entre el JDK, JRE y JVM. |
| Mejores libros Java en Español | Hazte con los mejores libros Java para aprender paso a paso y profundizar en las mejores prácticas |
| TensorFlow | Manejo del API de TensorFlow para la construcción de grafos de operaciones y su ejecución |
| Tutorial Log4j | Tutorial para el manejo de Log4j, herramienta ágil y flexible para la gestión de Logs en Java |
| Java Security | Entiende y aplica las posibilidades que da Java para mantener la seguridad |
| Tutorial JConsole | Aprende los conceptos básicos de monitorización de procesos Java con JConsole |
| JavaFX | Tutorial de JavaFX, librería gráfica moderna para construcción de GUIs en móvil, escritorio y web. |
| Estructuras de datos en Java | Explicación y ejemplos de las estructuras de datos más importantes: listas, pila, cola, arbol. |
| Javaapi | Conjunto de clases, interfaces, métodos y paquetes que forman parte de la plataforma Java estándar |
| Algoritmo Huffman | Método eficiente para codificar datos, asignando códigos más cortos a los caracteres más frecuentes |