Valid Anagram Using Sorting

Valid Anagram (LeetCode 242) via sorting: two strings are anagrams iff their sorted characters match. O(n log n), with an O(n) counting note. Python/Java/C++.

Problem Statement

Given two strings s and t, return true if t is an anagram of s (same characters with the same counts).

Example

Input:  s = "anagram", t = "nagaram"
Output: true

Approach

Two strings are anagrams if and only if their sorted forms are identical. Sort both and compare (after a quick length check). This is O(n log n); a frequency-count comparison does it in O(n), which is preferable for large inputs.

Complexity

  • Time: O(n log n) (sorting approach)
  • Space: O(n)

Solution Code

Python

def isAnagram(s, t):
    if len(s) != len(t):
        return False
    return sorted(s) == sorted(t)

Java

boolean isAnagram(String s, String t) {
    if (s.length() != t.length()) return false;
    char[] a = s.toCharArray(), b = t.toCharArray();
    Arrays.sort(a); Arrays.sort(b);
    return Arrays.equals(a, b);
}

C++

bool isAnagram(string s, string t) {
    if (s.size() != t.size()) return false;
    sort(s.begin(), s.end());
    sort(t.begin(), t.end());
    return s == t;
}

Key Takeaways

  • Sorting makes the anagram check a one-line comparison.
  • A 26-size count array solves it in O(n) if speed matters.
  • Reference: LeetCode 242 (Valid Anagram).
Written by Lorens Mishra

Software Engineer Notes Management System Administrator

Discussion

0 comments
Sign in to join the discussion.

No comments yet. Be the first to say something.