给定一个32位整数 num,你可以将一个数位从0变为1。请编写一个程序,找出你能够获得的最长的一串1的长度。
示例 1:
输入: num = 1775(110111011112)
输出: 8
示例 2:
输入: num = 7(01112)
输出: 4
遍历一次num的位数,记录前一个连续的1的个数和后一个连续1的个数,选加起来最大的。
class Solution:
def reverseBits(self, num: int) -> int:
m = 0
cur = 0
pre = 0
while num:
if 1&num:
cur += 1
else:
if pre+cur+1>m:
m = pre+cur+1
pre = cur
cur = 0
num>>=1
if pre+cur+1>m:
m = pre+cur+1
return m