检查数字的二进制表示在块中是否具有相同数量的 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.