Giả sử chúng ta có một tập hợp các chuỗi. Chúng ta phải nhóm các anagram (đảo từ) lại với nhau. Ví dụ, nếu ["eat", "tea", "tan", "ate", "nat", "bat"], các nhóm là [["ate","eat","tea"],["nat","tan"],["bat"]].
Để giải quyết, chúng ta làm theo các bước sau:
- Định nghĩa
reslà bản đồ (dictionary). - Với mỗi
itrong mảng chuỗi:x:= chuỗi sau khi sắp xếp và nối các ký tự củai.- Nếu
xtrong kết quả:- Chèn
ivàoresult[x].
- Chèn
- Ngược lại
result[x] := [i].
- Trả về các giá trị của
resdưới dạng danh sách.
Ví dụ (Python)
Xem triển khai sau để hiểu rõ hơn:
class Solution:
def groupAnagrams(self, strs):
result = {}
for i in strs:
x = "".join(sorted(i))
if x in result:
result[x].append(i)
else:
result[x] = [i]
return list(result.values())
ob1 = Solution()
print(ob1.groupAnagrams(["eat", "tea", "tan", "ate", "nat", "bat"]))
Đầu vào
["eat", "tea", "tan", "ate", "nat", "bat"]
Đầu ra
[["ate","eat","tea"],["nat","tan"],["bat"]]