Compruebe si dos cadenas son anagramas usando Python

Vaibhav Vaibhav 10 octubre 2023
  1. Verifique si dos cadenas son anagramas usando la clasificación en Python
  2. Compruebe si dos cadenas son anagramas mediante diccionarios de frecuencia en Python
Compruebe si dos cadenas son anagramas usando Python

Un anagrama es una palabra formada reordenando las letras de alguna otra palabra.

Por ejemplo, race y care, listen y silent, fried y fired, knee y keen son algunos pares de anagramas. dad y bad, apple y mango, hello y world no son anagramas.

Utilizando lenguajes de programación, podemos comprobar rápidamente si dos cadenas son anagramas entre sí o no.

Este artículo mostrará cómo verificar si dos cadenas son anagramas o no usan Python. Hablaremos de algunos enfoques para el mismo.

Verifique si dos cadenas son anagramas usando la clasificación en Python

Para comprobar si dos cadenas son anagramas o no, podemos ordenar las dos cadenas y comprobar si son iguales o no. Consulte el siguiente código para el mismo.

La complejidad temporal del código es O(nlogn) debido a la clasificación, y la complejidad espacial es O(1), porque no estamos almacenando ningún valor.

def check_anagram(a, b):
    if a is None or b is None or len(a) != len(b):
        return "Not Anagram"

    return "Anagram" if sorted(a) == sorted(b) else "Not Anagram"


print(check_anagram("keen", "knee"))
print(check_anagram("race", "care"))
print(check_anagram("fried", "fired"))
print(check_anagram("apple", "paddle"))
print(check_anagram("first", "second"))
print(check_anagram(None, "second"))
print(check_anagram("first", None))
print(check_anagram(None, None))

Producción :

Anagram
Anagram
Anagram
Not Anagram
Not Anagram
Not Anagram
Not Anagram
Not Anagram

Compruebe si dos cadenas son anagramas mediante diccionarios de frecuencia en Python

Para comprobar si dos cadenas son anagramas, podemos mantener el recuento de caracteres presentes en ambas cadenas y comparar los recuentos. Si fueran iguales, esto significa que las dos cadenas son anagramas. De lo contrario, no lo son.

Consulte el siguiente código para el mismo.

La complejidad de tiempo de la siguiente solución es O(n) ya que estamos iterando sobre las dos cadenas. La complejidad de tiempo promedio de agregar un elemento al diccionario y recuperar un elemento es O(1).

Además, comparar dos diccionarios con el mismo número de claves es O(n). Y la complejidad del espacio es O(n) porque mantenemos dos diccionarios y, entre bastidores, los diccionarios utilizan matrices para almacenar claves y valores.

def check_anagram(a, b):
    if a is None or b is None or len(a) != len(b):
        return "Not Anagram"

    counts_a = {}
    counts_b = {}

    for x in a:
        if x not in counts_a.keys():
            counts_a[x] = 1
        else:
            counts_a[x] += 1

    for x in b:
        if x not in counts_b.keys():
            counts_b[x] = 1
        else:
            counts_b[x] += 1

    return "Anagram" if counts_a == counts_b else "Not Anagram"


print(check_anagram("keen", "knee"))
print(check_anagram("race", "care"))
print(check_anagram("fried", "fired"))
print(check_anagram("apple", "paddle"))
print(check_anagram("first", "second"))
print(check_anagram(None, "second"))
print(check_anagram("first", None))
print(check_anagram(None, None))

Producción :

Anagram
Anagram
Anagram
Not Anagram
Not Anagram
Not Anagram
Not Anagram
Not Anagram
Vaibhav Vaibhav avatar Vaibhav Vaibhav avatar

Vaibhav is an artificial intelligence and cloud computing stan. He likes to build end-to-end full-stack web and mobile applications. Besides computer science and technology, he loves playing cricket and badminton, going on bike rides, and doodling.

Artículo relacionado - Python String