Skip to main content

Command Palette

Search for a command to run...

[LeetCode] Top Interview 150 Problems Solving # 242 Valid Anagram

Updated
2 min read
R

South Korean, master's degree of AI. A research focused AI specialist, and a rogrammer for LLM. I am seeking opportunities worldwide. I used to live in Frankfurt, Moscow, Pretoria, Baguio. Where to next?

Understanding the Problem

It is to find valid anagram. Anagram is a word, as for this problem, which can be rearranged to be formed another word. In this problem, s and t strings are given with characters each, and they can form exactly the same words or not. If s can be rearranged to be t, or t can be rearranged to be s, return True. If the characters in s and t are irrelevant, return False.

# example 1
Input: s = "anagram", t = "nagaram"
Output: True

# example 2
Input: s = "anagram", t = "annagrmm"
Output: False

Approach

I would solve the problem by simply sorting the two strings and comparing them.

Solution

class Solution:
    def isAnagram(self, s: str, t: str) -> bool:
        # 20ms runtime
        s_sorted = sorted(s)
        t_sorted = sorted(t)

        if s_sorted != t_sorted:
            return False
        return True

This was simple but it took 20ms runtime as the sorting logic used twice in the code was causing a sort of delayed runtime. So I would write down the code again to make it run faster.

class Solution:
    def isAnagram(self, s: str, t: str) -> bool:
        # 7ms runtime
        checked = []
        for c in s:
            if c in checked:
                continue
            elif s.count(c) == t.count(c):
                checked.append(c)
            else:
                return False
        return True

In this code, it goes into the for loop by each character as c. Each character is counted in s and t, then compare the count. If counts are equal, put this c into checked so the same character will not be considered for checking the count anymore.

This code reduced the runtime by 13ms(20ms → 7ms).

Reflection

Well, I normally do not have to consider the time complexity in easy problems like this, but I would not feel any comfortable with two sorting code lines though. It is better to practice the runtime efficiency for harder problems, I think.

More from this blog

R

Ramieeee's IT blog

36 posts

Algorithms, IT news, my thoughts note