📅  最后修改于: 2023-12-03 15:10:55.752000             🧑  作者: Mango
当一个字符串只包含“01”和“10”这两个子串时,我们称其为二进制字符串。现在我们需要检查给定的数字在二进制表示中是否只包含“01”和“10”这两个子串。
我们可以将给定数字转换为二进制字符串,然后遍历该字符串,逐一判断是否只包含“01”和“10”这两个子串。如果存在其他子串,则不符合要求。
以下是一种可能的实现方式:
def check_binary(num: int) -> bool:
binary_str = bin(num)[2:] # 转换为二进制字符串
for i in range(len(binary_str) - 1):
if binary_str[i:i+2] not in ["01", "10"]:
return False
return True
下面是几个示例,可以帮助你更好地理解这个函数的行为:
assert check_binary(2) == True # 2 的二进制为 '10'
assert check_binary(3) == True # 3 的二进制为 '11'
assert check_binary(5) == False # 5 的二进制为 '101',包含了子串 '10' 和 '01' 以外的字符
assert check_binary(7) == False # 7 的二进制为 '111',同样不符合要求
通过这些示例,我们可以看到函数的表现符合我们的预期。