檢查數字的二進位制表示在塊中是否具有相同數量的 0 和 1(Python)
假設我們有一個數字 num,我們需要檢查 num 的二進位制表示是否具有相同數量的連續的 0 和 1 塊。需要注意的是,0 和所有位都為 1 的數字不被認為具有相同數量的 0 和 1 塊。
因此,如果輸入是 num = 455,則輸出為 True,因為該數字的二進位制表示為 111000111。
為了解決這個問題,我們將遵循以下步驟:
- bin_form := num 的二進位制形式
- one_count := 一個新的集合
- count := 1
- 對於 i 的範圍從 0 到 bin_form 的位數 - 1,執行:
- 如果 bin_form[i] 與 bin_form[i + 1] 相同,則:
- count := count + 1
- 否則:
- 將 count 插入 one_count
- count := 1
- 如果 bin_form[i] 與 bin_form[i + 1] 相同,則:
- 如果 one_count 的大小為 1,則:
- 返回 True
- 返回 False
讓我們看看下面的實現,以便更好地理解:
示例程式碼
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))輸入
455
輸出
True
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP