Cho một mảng chữ thường. Nhiệm vụ tìm kích thước tập con lớn nhất của chuỗi là anagram của nhau. Anagram của chuỗi nghĩa là một chuỗi là anagram của chuỗi khác nếu chuỗi thứ hai chỉ là sắp xếp lại chuỗi đầu. Ta có thể giải quyết nhanh trong Python dùng phương thức Counter().
Ví dụ, chuỗi 'python' và 'typhon' là anagram.
Thuật toán
Bước 1: Tách chuỗi nhập cách nhau bởi dấu cách thành các từ. Bước 2: Sắp xếp từng chuỗi trong danh sách chuỗi cho trước. Bước 3: Tạo dictionary dùng Counter method với key là chuỗi và value là tần suất. Bước 4: Lấy giá trị tần suất lớn nhất dùng hàm max.
Ví dụ mã
# Hàm tìm kích thước tập con lớn nhất của từ anagram
from collections import Counter
def largestana(str1):
# Tách chuỗi nhập cách nhau bởi dấu cách
str1 = str1.split(" ")
# Sắp xếp từng chuỗi trong danh sách
for i in range(0, len(str1)):
str1[i] = ''.join(sorted(str1[i]))
# Tạo dictionary dùng Counter
newstr1 = Counter(str1)
# Lấy giá trị tần suất lớn nhất
print("The Size Of largest subset of Anangram word is ::>", max(newstr1.values()))
# Driver program
if __name__ == "__main__":
str1 = input("Enter the string ::>")
largestana(str1)
Kết quả
Enter the string ::>qwe ewq rty ytr ytr ytr The Size Of largest subset of Anangram word is ::> 4