Hai chuỗi được gọi là anagram nếu chúng chứa cùng các ký tự nhưng thứ tự khác nhau. Hướng dẫn này sử dụng collections.Counter() để kiểm tra anagram hiệu quả.
collections.Counter()
Counter trả về đối tượng dictionary chứa tần suất xuất hiện của mỗi ký tự. Nó hỗ trợ các phương thức như most_common(), elements(), v.v.
Ví dụ cơ bản
import collections
counter = collections.Counter("Hafeez")
print(counter)
print("\nMost common character")
print(counter.most_common(1))Kết quả
Counter({'e': 2, 'H': 1, 'a': 1, 'f': 1, 'z': 1})
Most common character
[('e', 2)]Thuật toán kiểm tra anagram
- Khởi tạo hai chuỗi.
- Tạo đối tượng Counter cho mỗi chuỗi.
- So sánh hai Counter: nếu bằng nhau → True, ngược lại → False.
Ví dụ hoàn chỉnh
import collections
string_one = "cat"
string_two = "atc"
if collections.Counter(string_one) == collections.Counter(string_two):
print(True)
else:
print(False)Kết quả
True
Kết luận
Cách này ngắn gọn, dễ đọc và hiệu quả cho bài toán anagram. Bạn có thể mở rộng để tìm tất cả anagram trong danh sách từ.