检查一个数字的二进制表示在 Python 的块中是否有相同数量的 0 和 1

假设我们有一个数字 num,我们要检查 num 的二进制表示是否有相同数量的 0 和 1 连续块。我们必须记住,0 和全为 1 的数字不被视为具有 0 和 1 的块数。

因此,如果输入类似于 num = 455,那么输出将为 True,因为该数字的二进制表示为 111000111。

为了解决这个问题,我们将按照以下步骤操作 -

  • bin_form := num 的二进制形式

  • one_count := 一个新的集合

  • 计数:= 1

  • 对于范围 0 到 bin_form - 1 的位数的 i,请执行

    • 将计数插入 one_count

    • 计数:= 1

    • 计数 := 计数 + 1

    • 如果 bin_form[i] 与 bin_form[i + 1] 相同,则

    • 否则,

    • 如果 one_count 的大小与 1 相同,则

      • 返回真

    • 返回错误

    让我们看看以下实现以获得更好的理解 -

    示例代码

    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

    猜你喜欢