📌  相关文章
📜  检查给定数字在其二进制表示形式中是否仅包含“ 01”和“ 10”作为子字符串(1)

📅  最后修改于: 2023-12-03 15:10:55.752000             🧑  作者: Mango

检查“01”和“10”是否是二进制字符串的子串

当一个字符串只包含“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',同样不符合要求

通过这些示例,我们可以看到函数的表现符合我们的预期。