一、使用场景
包含但是不局限于以下场景使用。
二进制表示中两个相邻 1 之间的最长距离。例如,22 的二进制是 “10110” 。
二、通用示例
二进制表示中两个相邻 1 之间的最长距离。
代码如下(示例):
public static void main(String[] args) {
// 22 的二进制是 "10110"
int n = 22;
int maxLen = 0;
for (int i = 0, j = -1; n != 0 ; i++) {
if ((n&1) == 1) {
if (j != -1) {
maxLen = Math.max(maxLen, i - j);
}
j = i;
}
n>>=1;
}
System.out.println(maxLen);
}
三、要点
- 通过 j 记录上一次 1 的位置。
- 将 j 设置为 -1 ,是因为相邻两个 1 之间的距离为 1。
- if (j != -1) ,用于判断是否出现第二个 1 。
四、总结
以上示例只是用于展示使用方法。
更丰富的例子可以参考力扣的题目:
868. 二进制间距