leetcode 面试题 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
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

    public int reverseBits(int num) {
        int[] res = new int[33];
        int index = 0;
        int max = 0;
        while (num != 0) {
            if (num % 2 == 0) {
                index++;
            } else {
                res[index]++;
            }
            num = num >>> 1;
        }
        for (int i = 0; i <= index; i++) {
            max = Math.max(max, res[i] + res[i + 1] + 1);
        }
        return max > 32 ? 32 : max;
    }

posted @ 2021-05-08 17:23  旺仔古李  阅读(84)  评论(0编辑  收藏  举报