Skip to content

Valid Anagram

def isAnagram(s: str, t: str) -> bool:
    if len(s) != len(t):
        return False

    characters = {}

    for character in s:
        if character in characters:
            characters[character] += 1
        else:
            characters[character] = 1

    for character in t:
        if character not in characters:
            return False
        characters[character] -= 1

    for k, v in characters.items():
        if v > 0:
            return False
    return True


s = "anagram"
t = "nagaram"

isAnagram(s, t)
True
def isAnagram(s: str, t: str) -> bool:
    if len(s) != len(t):
        return False

    characters = {}

    for character in s:
        if character in characters:
            characters[character] += 1
        else:
            characters[character] = 1

    for character in t:
        if character not in characters or characters[character] < 0:
            return  False
        characters[character] -= 1
    return True

s = "anagram"
t = "nagaram"

isAnagram(s, t)
True
# 08/03/26
# Input: s = "anagram", t = "nagaram"
# Output: true
# Input: s = "rat", t = "car"
# Output: false
def isAnagram(s: str, t: str) -> bool:
    if len(s) != len(t):
        return False

    s_count = {}
    t_count = {}

    for index in range(len(s)):
        s_count[s[index]] = 1 + s_count.get(s[index], 0)
        t_count[t[index]] = 1 + t_count.get(t[index], 0)

    return s_count == t_count


checks = [("anagram", "nagaram", True), ("rat", "car", False)]
for s, t, result in checks:
    assert isAnagram(s, t) == result