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

Kiểm tra tần suất ký tự có thể bằng nhau trong Python (Counter, set)

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ể.