博客
关于我
LeetCode0190. 颠倒二进制位
阅读量:302 次
发布时间:2019-03-03

本文共 811 字,大约阅读时间需要 2 分钟。

为了正确颠倒给定的32位无符号整数的二进制位,我们可以采用以下优化方法:

方法一:拼接反转法

  • 解题思路:将输入的数字转换为二进制字符串,去掉前缀“0b”,补足到32位,反转字符串,然后将反转后的字符串转换为整数。
  • 解题代码:
    def reverseBits(self, n: int) -> int:    n = n & 0xFFFFFFFF  # 确保n是32位    bin_str = bin(n)[2:]  # 去掉0b前缀    bin_str = bin_str.zfill(32)  # 补足到32位    reversed_str = bin_str[::-1]  # 反转字符串    return int(reversed_str, 2)
  • 分析:时间复杂度O(1),空间复杂度O(1)。
  • 方法二:逐位处理法

  • 解题思路:将输入的数字转换为32位二进制字符串,逐位从右向左计算结果。
  • 解题代码:
    def reverseBits(self, n: int) -> int:    n = n & 0xFFFFFFFF  # 确保n是32位    bin_str = bin(n)[2:]  # 去掉0b前缀    bin_str = bin_str.zfill(32)  # 补足到32位    result = 0    for bit in reversed(bin_str):        result = (result << 1) | int(bit)    return result
  • 分析:时间复杂度O(1),空间复杂度O(1)。
  • 优化说明

    • 限制32位:使用n & 0xFFFFFFFF确保输入在32位范围内。
    • 补足零:使用zfill(32)确保二进制字符串为32位。
    • 反转处理:通过字符串反转或逐位处理,确保结果正确。

    这两种方法均能在常数时间内完成任务,适用于所有32位无符号整数情况。

    转载地址:http://qium.baihongyu.com/

    你可能感兴趣的文章
    python判断汉字数目
    查看>>
    python判断文件是空的,如果是空的,就删除
    查看>>
    python判断密码是否正确_python密码判断是否符合要求的方法
    查看>>
    python判断字符串包含中文_Python 判断字符串是否包含中文
    查看>>
    python删除第一行_Python 乱码指北:一行删掉根目录
    查看>>
    Python删除列表元素的三种方法
    查看>>
    python初步学习-python数据类型-集合(set)
    查看>>
    python列表生成字典_Python中将字典转换为列表的方法
    查看>>
    python列表对应元素合并为列表及判断一个列表是几维
    查看>>
    python+flask计算机毕业设计骨科门诊患者档案管理系统(程序+开题+论文)
    查看>>
    python+flask计算机毕业设计高校体测管理系统的设计与实现(程序+开题+论文)
    查看>>
    python+flask计算机毕业设计高校体育赛事系统(程序+开题+论文)
    查看>>
    python+flask计算机毕业设计高校危化品管理系统(程序+开题+论文)
    查看>>
    python+flask计算机毕业设计高校教学档案管理系统(程序+开题+论文)
    查看>>
    python+flask计算机毕业设计高校教学督导平台(程序+开题+论文)
    查看>>
    python+flask计算机毕业设计高校校内景点平台(程序+开题+论文)
    查看>>
    python+flask计算机毕业设计高校校园线上跳蚤市场的系统设计(程序+开题+论文)
    查看>>
    Python图形处理
    查看>>
    python+flask计算机毕业设计高校物品使用互益平台的设计与实现(程序+开题+论文)
    查看>>
    Python函数,匿名函数,高阶函数,内置函数——08
    查看>>