加载中...
面试题 05.03-翻转数位(Reverse Bits LCCI)
发表于:2021-12-03 | 分类: 简单
字数统计: 304 | 阅读时长: 1分钟 | 阅读量:

原文链接: https://leetcode-cn.com/problems/reverse-bits-lcci

英文原文

You have an integer and you can flip exactly one bit from a 0 to a 1. Write code to find the length of the longest sequence of 1s you could create.

Example 1:

Input: num = 1775(110111011112)
Output: 8

Example 2:

Input: num = 7(01112)
Output: 4

中文题目

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

示例 1:

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

示例 2:

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

通过代码

高赞题解

解题思路

每次维护三个变量
cur:当前位置为止连续1的个数,遇到0归零,遇到1加1
insert:在当前位置变成1,往前数连续1的最大个数,遇到0变为cur+1,遇到1加1
res:保存insert的最大值即可

代码

class Solution(object):
    def reverseBits(self, num):
        """
        :type num: int
        :rtype: int
        """
        cur = 0
        insert = 0
        res = 1
        for i in range(32):
            if num & (1<<i):
               cur += 1
               insert +=1
            else:
                insert = cur + 1
                cur = 0
            res = max(res,insert)
        return res

统计信息

通过次数 提交次数 AC比率
11649 30334 38.4%

提交历史

提交时间 提交结果 执行时间 内存消耗 语言
上一篇:
面试题 04.10-检查子树(Check SubTree LCCI)
下一篇:
面试题 08.11-硬币(Coin LCCI)
本文目录
本文目录