Discusión

Anagrama Solución en O(n + m) con sumas

@leonardoalonsososa_d8a854a7·17/7/2026editadoExplicación

Se pueden contar todos los caracteres del primer string dentro de un diccionario e ir sumando de a 1 si ya existe dentro de el, despues basta con validar si los caracteres del segundo diccionario existen en el diccionario en caso de que si se resta 1 al valor que tenga almacenado finalmente si es un anagrama la suma de todos los valores del diccionario debe ser 0

def are_anagrams(first: str, second: str) -> bool:
    # Escribe tu solución aquí
    first_frecuency = {}
    first = first.lower().strip().replace(" ", "")
    second = second.lower().strip().replace(" ", "")
    for char in first:
        if char not in first_frecuency:
            first_frecuency[char] = 1
        else:
            first_frecuency[char] = first_frecuency[char] + 1
    for char in second:
        if char not in first_frecuency:
            return False
        if char in first_frecuency:
            first_frecuency[char] = first_frecuency[char] - 1
    return True if sum(first_frecuency.values()) == 0 else False

Ese primer codigo es la version "verbosa" pero puede hacerse de este modo también

def normalize(s: str) -> str:
    return s.lower().strip().replace(" ", "")


def are_anagrams(first: str, second: str) -> bool:
    first = normalize(first)
    second = normalize(second)

    if len(first) != len(second):
        return False

    frequency: dict[str, int] = {}

    for char in first:
        frequency[char] = frequency.get(char, 0) + 1

    for char in second:
        if char not in frequency:
            return False
        frequency[char] -= 1

    return all(count == 0 for count in frequency.values())
0respuestas
Respuestas

Aún no hay respuestas

¡Sé el primero en responder!

Escribir un comentario

Debes iniciar sesión para publicar un comentario.