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

    你可能感兴趣的文章
    PbootCMS entrance.php SQL注入漏洞复现
    查看>>
    PbootCMS 前台RCE漏洞复现
    查看>>
    PBT
    查看>>
    PB级分析型数据库ClickHouse的应用场景和特性
    查看>>
    pc3-12800
    查看>>
    PCA---主成成分分析
    查看>>
    PCA和自动编码器:每个人都能理解的算法
    查看>>
    pca算法
    查看>>
    PCA降维demo
    查看>>
    SharePoint 2013 图文开发系列之定义站点模板
    查看>>
    PCB生产流程详解-ChatGPT4o作答
    查看>>
    PCB设计十条黄金法则
    查看>>
    SpringSecurity框架介绍
    查看>>
    PCI Express学习篇:Power Management(二)
    查看>>
    pcie握手机制_【博文连载】PCIe扫盲——Ack/Nak 机制详解(一)
    查看>>
    pcm转wav的方法及代码示例
    查看>>
    PC史上最悲剧的16次失败
    查看>>
    PC端恶意代码分析Lab1.1-5.1,从零基础到精通,收藏这篇就够了!
    查看>>
    PC端稳定性测试探索
    查看>>
    PC端编辑 但能在PC端模拟移动端预览的富文本编辑器
    查看>>