Dùng collections.Counter đếm tần suất, chuyển values thành set để xem số lượng tần suất khác nhau.
Ví dụ
from collections import Counter
def check_frequencies(s):
freq = Counter(s)
unique_freq = list(set(freq.values()))
if len(unique_freq) > 2:
print("Tần suất không thể bằng nhau")
elif len(unique_freq) == 2 and abs(unique_freq[1] - unique_freq[0]) > 1:
print("Tần suất không thể bằng nhau")
else:
print("Tần suất có thể bằng nhau")
test_str = "xxxyyyzzzzzz"
print("Chuỗi:", test_str)
check_frequencies(test_str)
Kết quả
Chuỗi: xxxyyyzzzzzz Tần suất không thể bằng nhau
Giải thích
- Counter cho tần suất: x:3, y:3, z:6.
- Set các tần suất: {3, 6} -> độ dài 2.
- Hiệu số 6-3=3 > 1 -> không thể cân bằng bằng cách xóa 1 ký tự.
- Logic: nếu >2 tần suất khác nhau -> không. Nếu 2 tần suất mà chênh >1 -> không. Còn lại -> có thể.