# 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)
```