programa Java para verificar si dos cadenas son anagramas | Programa Anagrama
Publicado: 2021-07-23Tabla de contenido
Datos menos conocidos sobre Java
Al ser uno de los lenguajes de programación más duraderos, Java se usa en todo el mundo debido a sus características sólidas y flexibles. La estabilidad y versatilidad de Java lo han convertido en uno de los lenguajes de programación más buscados. Sin embargo, hay varios hechos menos conocidos sobre este lenguaje de programación seguro. Conozcamos algunos de ellos.
- Oak es el nombre original de Java.
- Puedes ganar mucho mientras aprendes este lenguaje de programación.
- Java es el segundo lenguaje de programación más poblado del mundo, siendo el primero el C.
- Alrededor de 3 mil millones de dispositivos en todo el mundo están trabajando en Java.
- Java es un lenguaje de programación sensible a mayúsculas y minúsculas. es decir, "Final" y "final" no son lo mismo en código Java. Lea más sobre por qué Java es tan popular entre los desarrolladores.
Una descripción general de Anagrama
Si una cadena se transforma en otra cadena reorganizando sus caracteres, se dice que las dos cadenas son anagramas entre sí. Sin embargo, el número de caracteres en la cadena inicial y la cadena obtenida deben ser los mismos. Para comprender mejor el concepto de anagrama, consideremos dos cadenas, 'dios' y 'perro'.
Las cadenas 'dios' y 'perro' son anagramas entre sí porque la cadena anterior se puede reorganizar para obtener la última simplemente intercambiando las posiciones de los caracteres 'd' y 'g'. Para dos cadenas de entrada cualesquiera, se calcula la frecuencia de cada carácter para comprobar si las cadenas son anagramas entre sí o no. Entonces, un anagrama de una cadena se puede definir como cualquier otra cadena que tenga los mismos caracteres con la misma frecuencia que en la cadena de entrada en cualquier secuencia.
Algoritmo para el programa Anagram en Java
Paso 1: Defina las dos cadenas de entrada.
Paso 2: Se determina la longitud de cada cadena. Las cadenas de entrada no son anagramas entre sí si tienen diferentes longitudes de cadena.
Paso 3: si las cadenas tienen la misma longitud, los caracteres de la cadena se convierten en letras minúsculas para facilitar la comparación.

Paso 4: Los caracteres de la cadena se ordenan mediante funciones integradas o se convierten en una matriz de caracteres y luego se ordenan.
Paso 5: Se comprueba la igualdad de la matriz ordenada de caracteres.
Implementación del programa Anagram en Java
Hay varias soluciones para implementar un código para encontrar si dos cadenas son anagramas o no. Para cada solución discutida en las secciones subsiguientes, el paso 2 del algoritmo descrito anteriormente forma la base y facilita la salida anticipada si las longitudes de las cadenas no coinciden. En las siguientes secciones, comprendamos más sobre los diferentes tipos de escritura de un código para la lógica de anagramas.

Enfoque de clasificación
Los caracteres de cada cadena de entrada se pueden ordenar para obtener dos matrices de caracteres normalizados. Si las matrices normalizadas de ambas cadenas de entrada son las mismas, entonces las cadenas se consideran anagramas entre sí y viceversa.
La comprensión e implementación de este código son más fáciles. La complejidad temporal de la solución anterior es O(n log n) y se requiere espacio adicional para almacenar matrices de caracteres de las cadenas de entrada.
Aprenda cursos de desarrollo de software en línea de las mejores universidades del mundo. Obtenga Programas PG Ejecutivos, Programas de Certificado Avanzado o Programas de Maestría para acelerar su carrera.
Método de conteo para implementar la lógica de anagramas
En este enfoque, se mide el número de existencias de cada carácter en las dos cadenas de entrada. Si la frecuencia de cada carácter en ambas cadenas es idéntica, las cadenas son anagramas entre sí.
Construyamos un solo histograma para ahorrar algo de memoria. En la primera cadena, los recuentos de cada carácter se incrementan, mientras que los recuentos se reducen para el segundo. Si el resultado final equilibra todo a cero, entonces las cadenas son anagramas.
Esta solución se ejecuta más rápido que la solución anterior y su complejidad de tiempo es O(n). Sin embargo, se requiere espacio adicional para contar los caracteres. Esta solución es prácticamente efectiva solo para cadenas con un rango de caracteres más pequeño. Otro hecho acerca de esta solución es que utiliza un número limitado de funciones Java incorporadas y, por lo tanto, aumenta la longitud del código.
Pago: ideas y temas de proyectos de Java
Determinar anagramas comprobando con MultiSet
El uso de MultiSet, una colección que ayuda a la comparación independiente del orden con elementos idénticos, simplifica el proceso de contar y comparar en esta solución.

Cada cadena de entrada se convierte inicialmente en un MultiSet de caracteres y luego se verifica la paridad.
La complejidad temporal de esta solución es O(n). Es similar al enfoque de conteo para determinar anagramas. Sin embargo, puede funcionar de manera eficiente para cadenas de mayor longitud. Además, la codificación implica una mayor cantidad de funciones de la biblioteca Java.
Enfoque basado en letras para determinar anagramas
Todas las soluciones discutidas hasta ahora consideran los caracteres de puntuación también como parte de la cadena. Además, esas soluciones distinguen entre mayúsculas y minúsculas. El enfoque basado en letras implementa un código para verificar las cadenas de entrada según la definición lingüística de los anagramas. En este enfoque, los espacios en blanco y las puntuaciones no se consideran parte de la cadena de entrada.
El paso inicial al implementar una solución basada en letras es la eliminación de caracteres no deseados y la conversión de todos los caracteres válidos en letras minúsculas. Después de este paso, cualquiera de las implementaciones discutidas anteriormente se puede usar para verificar si las cadenas son anagramas o no.
Si está interesado en obtener más información sobre Java, desarrollo de software de pila completa, consulte el programa Executive PG de upGrad & IIIT-B en desarrollo de software: especialización en desarrollo de pila completa, que está diseñado para profesionales que trabajan y ofrece más de 500 horas de formación rigurosa. , más de 9 proyectos y asignaciones, estado de exalumno de IIIT-B, proyectos finales prácticos prácticos y asistencia laboral con las mejores empresas.
