Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Nhóm Anagram trong Python


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 res là bản đồ (dictionary).
  • Với mỗi i trong mảng chuỗi:
    • x := chuỗi sau khi sắp xếp và nối các ký tự của i.
    • Nếu x trong kết quả:
      • Chèn i vào result[x].
    • Ngược lại result[x] := [i].
  • Trả về các giá trị của res dướ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"]]