Q:
给定一个正整数 N
,找到并返回 N
的二进制表示中两个连续的 1 之间的最长距离。
如果没有两个连续的 1,返回 0
。
示例 1:
输入:22 输出:2 解释: 22 的二进制是 0b10110 。 在 22 的二进制表示中,有三个 1,组成两对连续的 1 。 第一对连续的 1 中,两个 1 之间的距离为 2 。 第二对连续的 1 中,两个 1 之间的距离为 1 。 答案取两个距离之中最大的,也就是 2 。
思路:双指针暴力求解
class Solution:
def binaryGap(self, N):
"""
:type N: int
:rtype: int
"""
temp = bin(N)[2:]
res = 0
slow = 0
fast = 1
while (fast < len(temp)):
if temp[slow] == '1':
if temp[fast] == '1':
if fast-slow > res:
res = fast-slow
slow = fast
fast += 1
else:
fast += 1
else:
slow += 1
return res