0868. Binary Gap

0868. Binay Gap #

题目 #

给定正整数 n,找到并返回 n 的二进制表示中两个相邻 1 之间的最长距离。若不存在两个相邻的 1,返回 0

若只有 0 将两个 1 分隔开,则认为这两个 1 彼此相邻。两个 1 之间的距离是它们的二进制表示中位置的绝对差。

思路 #

代码 #

class Solution {
    public int binaryGap(int n) {
        int gap = 0, flag = -1;
        for (int i = 31; i >= 0; i--) {
            if (((n >> i) & 1) == 1) {
                if (flag > 0) gap = Math.max(gap, flag - i);
                flag = i;
            }
        }
        return gap;
    }
}