假设我们有一个数字 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