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 = 0while(left_bin != right_bin):left = left >> 1right = right >> 1left_bin = bin(left).zfill(32)right_bin = bin(right).zfill(32)cnt += 1return left << cnt
其实代码可以不用上面这样复杂,官方题解很简洁。不过我这个代码提供了一个Python的新颖的API(zfill函数)。这个函数是对字符串进行前导零补足。