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 bin_form [i] giống với bin_form [i + 1], thì
- 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