面试题 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;
    }
}

 

posted @ 2020-08-30 15:48  XXXSANS  阅读(128)  评论(0编辑  收藏  举报