Sử dụng Counter để đếm ký tự, phép & lấy giao nhau (min count), so sánh với Counter gốc.
Ví dụ
from collections import Counter
def can_form(str1, str2):
c1 = Counter(str1)
c2 = Counter(str2)
intersection = c1 & c2 # Lấy min count cho mỗi key
return intersection == c1 # str1 có thể tạo từ str2?
s1 = "Hi Mark"
s2 = "how are yoU"
print("Chuỗi 1:", s1)
print("Chuỗi 2:", s2)
if can_form(s1, s2):
print("Có thể tạo được")
else:
print("Không thể tạo được")
Kết quả
Chuỗi 1: Hi Mark Chuỗi 2: how are yoU Không thể tạo được
Giải thích
Counter(str1) & Counter(str2)trả về Counter mới với count = min(count1, count2) cho mỗi key.- Nếu giao nhau bằng Counter(str1) -> mọi ký tự trong str1 đều có trong str2 với số lượng >=.
- Ví dụ: 'H' không có trong str2 -> giao nhau thiếu 'H' -> False.
- Phân biệt chữ hoa/thường.