Daily 16/12/2023: [242. Valid Anagram](https://leetcode.com/problems/valid-anagram/) # 1. Tóm tắt đề bài Cho hai chuỗi ```s``` và ```t```, trả về ```true``` nếu ```t``` là một chuỗi **anagram** của ```s``` và ```false``` ngược lại. **Anagram** là một từ hoặc cụm từ được hình thành bằng cách sắp xếp lại các chữ cái của một từ hoặc cụm từ khác, thường sử dụng tất cả các chữ cái gốc chính xác một lần. #### Giới hạn - $-1 \le$ ```s.length, t.length``` $\le 5 \cdot 10^4$ # 2. Tóm tắt lời giải #### Phân tích - Một bài siêu dễ, có hai hướng làm các bạn có thể nhận ra luôn, đó là sắp xếp lại chuỗi và so sánh - Cách thứ 2 đó là đếm từng chữ cái sau đó kiểm tra xem từ thứ 2 có số lượng chữ cái đó giống thế không. # 3. Lời giải chi tiết #### Code ```python class Solution: def isAnagram(self, s: str, t: str) -> bool: return sorted(s) == sorted(t) ``` ```python class Solution: def isAnagram(self, s: str, t: str) -> bool: return Counter(s) == Counter(t) ``` #### Độ phức tạp $O(nlog(n))$ với cách đầu tiên do phải ```sorted``` và $O(n)$ với cách thứ 2. # 4. Kết luận & gợi ý mở rộng - Đây là một dạng bài mà sau này phải dùng nhiều kĩ thuật để độ phức tạp tối giản. - Các bạn có thể luyện thử bài dưới đây với mức độ khó hơn một chút. - https://leetcode.com/problems/group-anagrams/ > Hãy dùng nghị lực và sự kiên trì để đánh bại mọi thứ. ###### #Hashtag: <span style='color: blue'>Sort, Map, Dictionary, Brute Force</span>