博客
关于我
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/

    你可能感兴趣的文章
    Pandas模块,我觉得掌握这些就够用了!
    查看>>
    Pandas玩转文本处理!
    查看>>
    pandas的to_sql方法中使用if_exists=‘replace‘
    查看>>
    pandas读取parquet报错
    查看>>
    spring5-介绍Spring框架
    查看>>
    PandoraFMS 监控软件 任意文件上传漏洞复现
    查看>>
    Parallel.ForEach的基础使用
    查看>>
    parallels desktop for mac安装虚拟机 之parallelsdesktop密钥 以及 parallels desktop安装win10的办公推荐可以提高办公效率...
    查看>>
    ParseChat应用源码ios版
    查看>>
    Part 2异常和错误
    查看>>
    PAT 1027 Colors in Mars
    查看>>
    PAT 1127 ZigZagging on a Tree[难]
    查看>>
    PAT 2-07. 素因子分解(20)
    查看>>
    PAT-乙级-1040 有几个PAT
    查看>>
    PATA1038题解(需复习)
    查看>>
    Patching Array
    查看>>
    Path does not chain with any of the trust anchors
    查看>>
    Path形状获取字符串型变量数据
    查看>>
    PAT甲级——1001 A+B Format (20分)
    查看>>
    Skywalking原理
    查看>>