242. Valid Anagram
Problem
Given two strings s
and t
, return true
if t
is an anagram of s
, and false
otherwise.
An Anagram is a word or phrase formed by rearranging the letters of a different word or phrase, typically using all the original letters exactly once.
Example 1:
Input: s = "anagram", t = "nagaram" Output: true
Example 2:
Input: s = "rat", t = "car" Output: false
Solution
Simple sorted solution:
class Solution:
def isAnagram(self, s: str, t: str) -> bool:
return sorted(s) == sorted(t)
This is O(n log n) which is a bit slow
Solution 2
We can use Dicts for this, like:
class Solution:
def isAnagram(self, s: str, t: str) -> bool:
d1, d2 = {}, {}
for i in s:
d1[i] = d1.get(i, 0) + 1
for i in t:
d2[i] = d2.get(i, 0) + 1
return d1 == d2
Solution 3
The Counters
library is very handy for leetcode and we can make dicts with it like:
class Solution:
def isAnagram(self, s: str, t: str) -> bool:
return collections.Counter(s) == collections.Counter(t)