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

Kiểm tra biểu diễn nhị phân có số khối 0 và 1 liên tiếp bằng nhau trong Python

Cho số num. Kiểm tra xem biểu diễn nhị phân của nó có cùng số lượng khối (block) liên tiếp của 0 và 1 hay không. Lưu ý: số 0 và số toàn bit 1 không được coi là có khối 0 và 1.

Ví dụ: 455 → nhị phân 111000111 → các khối: 111, 000, 111 → độ dài khối: 3,3,3 → tất cả bằng nhau → True.

Giải thuật

  • Chuyển số thành chuỗi nhị phân (bỏ tiền tố '0b').
  • Duyệt chuỗi, đếm độ dài các khối liên tiếp ký tự giống nhau.
  • Lưu độ dài các khối vào tập hợp. Nếu tập hợp có kích thước 1 → True.

Mã ví dụ

def solve(num):
    bin_form = bin(num).replace("0b", "")
    one_count = set()
    count = 1
    for i in range(len(bin_form)-1):
        if bin_form[i] == bin_form[i + 1]:
            count += 1
        else:
            one_count.add(count)
            count = 1
    if len(one_count) == 1:
        return True
    return False

num = 455
print(solve(num))

Đầu vào

455

Đầu ra

True