检查一个数字的二进制表示在 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

    以上是 检查一个数字的二进制表示在 Python 的块中是否有相同数量的 0 和 1 的全部内容, 来源链接: utcz.com/z/358649.html

    回到顶部