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

Kiểm tra tần suất chữ số ≤ giá trị chữ số trong Python

Cho số nguyên n, kiểm tra xem tần suất xuất hiện của mỗi chữ số (0-9) có ≤ giá trị của chính chữ số đó không.

Ví dụ: n = 5162569 → tần suất: 5(2), 1(1), 6(2), 2(1), 9(1) → tất cả ≤ chữ số tương ứng → True.

Thuật toán

  • Với mỗi chữ số i từ 0 đến 9, đếm số lần xuất hiện trong n.
  • Nếu đếm > i → trả về False.
  • Duyệt hết → True.

Triển khai


def solve(n):
    for i in range(10):
        temp = n
        cnt = 0
        while temp:
            if temp % 10 == i:
                cnt += 1
            if cnt > i:
                return False
            temp //= 10
    return True

s = 5162569
print(solve(s))  # True

Đầu vào / Đầu ra

Input: 5162569
Output: True

Cải tiến: Dùng collections.Counter(str(n)) để đếm nhanh hơn.