# LC 242. Valid Anagram ### [Problem link](https://leetcode.com/problems/valid-anagram/) ###### tags: `leedcode` `easy` `python` `c++` Given two strings <code>s</code> and <code>t</code>, return <code>true</code> if <code>t</code> is an anagram of <code>s</code>, and <code>false</code> 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 ``` **Constraints:** - <code>1 <= s.length, t.length <= 5 * 10<sup>4</sup></code> - <code>s</code> and <code>t</code> consist of lowercase English letters. **Follow up:** What if the inputs contain Unicode characters? How would you adapt your solution to such a case? ## Solution 1 #### Python ```python= class Solution: def isAnagram(self, s: str, t: str) -> bool: return Counter(s) == Counter(t) ``` #### C++ ```cpp= class Solution { public: bool isAnagram(string s, string t) { unordered_map<char, int> cnts; for (char c: s) { cnts[c]++; } for (char c: t) { cnts[c]--; } for (auto cnt: cnts) { if (cnt.second != 0) { return false; } } return true; } }; ``` >### Complexity >| | Time Complexity | Space Complexity | >| ----------- | --------------- | ---------------- | >| Solution 1 | O(n) | O(n) | ## Note x