49. Group Anagrams
Tags:
Medium
Skills:
String
June 24, 2025
04:32 AM
No headings found
Loading content...
Related Posts
Leetcode
No headings found
Related Posts
Leetcode
Problem
Để nhóm các từ là anagram với nhau, ta cần nhận diện những từ có thể sắp xếp lại thành nhau. Có hai cách phổ biến:
Nếu hai từ là anagram, khi sắp xếp các ký tự của chúng theo thứ tự alphabet, kết quả sẽ giống nhau.
Ta duyệt qua từng từ, sắp xếp ký tự, dùng kết quả này làm key trong một Map, và gom các từ có cùng key vào cùng một nhóm.
Đếm số lần xuất hiện của từng ký tự ('a' đến 'z') trong mỗi từ, chuyển mảng tần suất này thành chuỗi (hoặc một dạng hash), dùng làm key nhóm các từ.
Solution - 2
1function groupAnagrams(strs: string[]): string[][] {
2 let map: Map<string, string[]> = new Map();
3 for (const str of strs) {
4 let count: number[] = Array(26).fill(0)
5 for (const char of str) {
6 count[char.charCodeAt(0) - 'a'.charCodeAt(0)]++
7 }
8
9 let key = count.join('#');
10 if (!map.has(key)) {
11 map.set(key, [])
12 }
13 map.get(key).push(str)
14 }
15
16 return Array.from(map.values())
17};join('#') để tránh nhầm lãn giữa các sốmap để nhóm các từ anagram với nhau