You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中在整数内查找二进制位序列的最优实现方案

二进制整数子串匹配优化需求

我有两个整数,分别命名为haystack和needle,需要检查needle的二进制表示是否出现在haystack的二进制序列中(可选返回首次出现的位置)。

示例

haystack = 0b10101111010110010101010101110
needle = 0b1011001 # 出现在位置13
needle = 0b111011 # 未出现

已知无法写出时间复杂度优于O(h)的代码(h为haystack的二进制位数),以下是我当前的实现代码。

现在需要处理的场景是:用固定不变且为奇数的needle,去检查数十亿个随机haystack整数(因此无法通过预处理haystack来优化速度)。

由于查找位置是可选需求,若能写出时间复杂度更优、仅返回布尔值表示是否存在的代码更佳——因为在数十亿次检查中,多数情况为不存在,仅当确认存在时再用现有代码查找位置即可。同时也接受存在假阳性的优秀概率算法。

当前实现代码

def find_needle_in_haystack(haystack, needle):
    n = needle.bit_length()  # 计算needle的二进制位数
    mask = (1 << n) - 1  # 创建一个n位全1的掩码
    i = 0
    while haystack != 0:
        x = haystack & mask  # 通过按位与取haystack的前n位
        if x == needle:
            return i
        i += 1
        haystack >>= 1  # 将haystack右移一位,检查下一组连续n位
    return -1  # 未找到匹配的needle

内容的提问来源于stack exchange,提问作者A.A

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 09:37:12