列表

详情


面试题 05.03. 翻转数位

给定一个32位整数 num,你可以将一个数位从0变为1。请编写一个程序,找出你能够获得的最长的一串1的长度。

示例 1:

输入: num = 1775(110111011112)
输出: 8

示例 2:

输入: num = 7(01112)
输出: 4

原站题解

去查看

上次编辑到这里,代码来自缓存 点击恢复默认模板
class Solution { public: int reverseBits(int num) { } };

golang 解法, 执行用时: 0 ms, 内存消耗: 1.9 MB, 提交时间: 2021-06-21 16:32:30

func reverseBits(num int) int {
	ans, cur, lastZero := 0, 0, -1
	for i := 0; i < 32; i++ {
		bit := num & (1 << (31-i))
		if bit != 0 {
			cur++
		} else {
			cur = i - lastZero
			lastZero = i
		}
		ans = max(ans, cur)
	}
	return ans
}

func max(x, y int) int {
	if x > y {
		return x
	}
	return y
}

上一题