---
tags: data_structure_python
---
# Valid Anagram <img src="https://img.shields.io/badge/-easy-brightgreen">
Given two strings s and t , write a function to determine if t is an anagram of s.
<ins>**Example 1:**</ins>
```
Input: s = "anagram", t = "nagaram"
Output: true
```
<ins>**Example 2:**</ins>
```
Input: s = "rat", t = "car"
Output: false
```
**Note:**
You may assume the string contains only lowercase alphabets.
**Follow up:**
What if the inputs contain unicode characters? How would you adapt your solution to such case?
# Solution
### Solution 1: First approach
Support unicode characters.
```python=
class Solution:
def isAnagram(self, s: str, t: str) -> bool:
# O(nlog(n)) in time complexity.
# O(1) in space complexity.
n, m = len(s), len(t)
if n != m:
return False
else:
t = "".join(sorted(t))
s = "".join(sorted(s))
return t == s
```
### Solution 2: Second approach
This approach doesn't support unicode characters. The space complexity is O(1) here because for any size of s/t, the array will stil contains 26 elements, thus constant.
```python=
class Solution:
def isAnagram(self, s: str, t: str) -> bool:
# O(n) in time complexity.
# O(1) in space complexity.
n, m = len(s), len(t)
if n != m:
return False
else:
counter = [0]*26
for letter in s:
counter[ord(letter) - ord('a')] += 1
for letter in t:
counter[ord(letter) - ord('a')] -= 1
if counter[ord(letter) - ord('a')] < 0:
return False
return True
```