Computer >> Máy Tính >  >> Lập trình >> Python

Kiểm tra xem biểu diễn nhị phân của một số có số lượng 0 và 1 bằng nhau trong các khối trong Python hay không

Giả sử chúng ta có một số num, chúng ta phải kiểm tra xem biểu diễn nhị phân của num có cùng số khối liên tiếp 0s và 1s hay không. Chúng ta phải lưu ý rằng 0 và một số có tất cả các số 1 không được coi là có số khối là 0 và 1.

Vì vậy, nếu đầu vào giống như num =455, thì đầu ra sẽ là True, vì biểu diễn nhị phân của số này là 111000111.

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

  • bin_form:=dạng nhị phân của num
  • one_count:=một tập hợp mới
  • số lượng:=1
  • đối với tôi trong phạm vi từ 0 đến số bit của bin_form - 1, thực hiện
    • nếu bin_form [i] giống với bin_form [i + 1], thì
      • count:=count + 1
    • nếu không,
      • chèn số lượng vào one_count
      • số lượng:=1
  • nếu kích thước của one_count bằng 1, thì
    • trả về True
  • trả về Sai

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

Mã mẫu

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