algorithm - 在不到 n 的时间内在位串中找到两个连续的 1?

标签 algorithm bit bitstring

我想找出一种方法来查看位串是否在小于 n 的时间内有 2 个连续的位串大小 n。

例如,假设我们的位串大小为 5(索引 0-4)。如果索引 1 和 3 都是 0,我可以返回 false。但如果他们都是,那么我可能需要看 5 次才能找到我的答案。

位串的长度不必为 5。为简单起见,假设它可以在 3 到 8 之间。

最佳答案

最简单的解决方案可能是按位 AND 原始字符串,其自身版本已向左或向右移动 1 位。如果生成的位字符串非零,那么你至少有一个 11 在那里:

test = (src & (src << 1));

关于algorithm - 在不到 n 的时间内在位串中找到两个连续的 1?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4096440/

相关文章:

algorithm - 计算相同对的数量

algorithm - 上述算法的平均案例复杂度

c++ - 如何比较 C++ 中的内存位?

java - BigInteger 大小的最小值

erlang - 将二进制文件分成 block 的更好方法,最好使用位串理解

java - 数据加密标准

algorithm - 图着色算法

算法:从未知数组中查找第二小元素的索引

mysql - 如何在 mysql 中更新 BIT 数据类型的字段

c - 如何在 Postgres 的 C 语言函数中返回位(n)或位变化(n)字段?