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