面试题 05.03. 翻转数位
给定一个32位整数 num,你可以将一个数位从0变为1。请编写一个程序,找出你能够获得的最长的一串1的长度。
示例 1:
输入: num = 1775(110111011112)
输出: 8
示例 2:
输入: num = 7(01112)
输出: 4
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/reverse-bits-lcci
双指针
class Solution { public int reverseBits(int num) { int pre=0; int cur=0; int res=1; for(int i=0;i<32;i++){ if((num&(1<<i))>0){ cur+=1; }else{ res = Math.max(pre+cur,res); pre = cur+1; cur=0; } } res=Math.max(pre+cur,res); return res; } }