1. 题目
2. 分析
这题挺难想的,我到现在还没想明白,为啥只用左区间和右区间就能找到目标值了,而不用挨个做与操作?
3. 代码
class Solution:
def rangeBitwiseAnd(self, left: int, right: int) -> int:
left_bin = bin(left).zfill(32)
right_bin = bin(right).zfill(32)
cnt = 0
while(left_bin != right_bin):
left = left >> 1
right = right >> 1
left_bin = bin(left).zfill(32)
right_bin = bin(right).zfill(32)
cnt += 1
return left << cnt
其实代码可以不用上面这样复杂,官方题解很简洁。不过我这个代码提供了一个Python的新颖的API(zfill函数)。这个函数是对字符串进行前导零补足。