DEV Community

Cover image for Valid Anagram
Abirami Prabhakar
Abirami Prabhakar

Posted on • Edited on

Valid Anagram

The valid anagram leetcode problem is used to find if two strings are of equal length and of same frequency, anagram is defined as a word that is made from another word with exactly all the orginal letters only once

How do we find if a word is an anagram?
To check if a word is an anagram of another we should check if the
both words have

Condition 1: both strings must have the same number of characters

len(s) == len(t)
Enter fullscreen mode Exit fullscreen mode

if not > not an anagram

Condition 2: Same Characters

both strings must contain the same set of characters

s = "rat"
t = "car"  > not same characters 
Enter fullscreen mode Exit fullscreen mode

Condition 3: Same Frequency

each character must appear the same number of times in both strings

s = "anagram"
t = "nagaram"

a → 3 times  
n → 1 time  
g → 1 time  
r → 1 time  
m → 1 time
Enter fullscreen mode Exit fullscreen mode

Approach

Instead of comparing order, we compare the frequency of characters in both strings

Step 1 : check length

if lengths are not equal → return false
because anagrams must have same number of characters

Step 2 : count characters in first string

store how many times each character appears

*Step 3 : reduce count using second string
*

for each character in second string:
if character not found → return false
else decrease its count

Step 4 : final check

if all counts become zero -> strings are anagrams
otherwise -> not anagrams

Algorithm

def isAnagram(s, t):
    if len(s) != len(t):
        return False
    count = {}
    for ch in s:
        count[ch] = count.get(ch, 0) + 1
    for ch in t:
        if ch not in count:
            return False
        count[ch] -= 1

    for val in count.values():
        if val != 0:
            return False
    return True
Enter fullscreen mode Exit fullscreen mode

Top comments (0)