檢查數字的二進位制表示在塊中是否具有相同數量的 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
  • 如果 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

更新於:2021年1月15日

瀏覽量:187

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.