检查数字的二进制表示在块中是否具有相同数量的 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
- 如果 bin_form[i] 与 bin_form[i + 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
广告
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP