计算最长连续1串:从位运算到滑动窗口
题目描述
给定一个32位整数 num,你可以将一个数位从0变为1。请编写一个程序,找出你能够获得的最长的一串1的长度。
示例 1:
输入: num = 1775 (二进制:11011101111)
输出: 8
示例 2:
输入: num = 7 (二进制:111)
输出: 4
示例 3:
输入: num = -1 (二进制:全为1)
输出: 32
解题分析
核心问题
我们需要通过将数字的某一位0变成1,来计算能够得到的最长连续1串的长度。考虑到数字的二进制表示,0和1之间的变化直接影响到最长连续1串的形成。因此,本问题的本质是通过位运算在二进制数中找到最长的1串。
如何理解问题
- 数字的二进制表示:我们需要将给定数字的二进制形式进行遍历,从中查找最长的连续1串。在遍历的过程中,我们可以通过改变一个0为1,看看能否得到更长的连续1串。
- 负数的补码表示:在处理负数时,不能直接利用二进制字符串的表示,因为计算机内部使用补码表示负数。因此,负数需要特殊处理。

最低0.47元/天 解锁文章
395

被折叠的 条评论
为什么被折叠?



