博客
关于我
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 django mysql写入中文乱码_django自动创建的mysql表里面中文乱码问题
    查看>>
    python docx的超链接网址和链接文本
    查看>>
    python elasticsearch 导出数据到json文件导入到另一个es中
    查看>>
    python ETL工具 pyetl
    查看>>
    Python eval 函数说明
    查看>>
    python eval简介
    查看>>
    python excel 饼图 简书_Python实现绘画多个饼图
    查看>>
    python excel接口自动化测试框架!
    查看>>
    Python exec 函数解析:探索动态代码执行的无限可能!
    查看>>
    Python EXEC和__NAME__
    查看>>
    Python exe文件打包神器-Nuitka!
    查看>>
    python file
    查看>>
    Python FileDialog获取文件夹路径不是文件
    查看>>
    python filter过滤器的使用_python基础知识分享:zip()、filter函数和reduce如何使用?...
    查看>>
    python flask 请求code 400, message Bad request version
    查看>>
    Python Flink Stateful函数入口上的Kafka键访问
    查看>>
    Python float - str - 浮动怪异
    查看>>
    Python Flower库:分布式任务管理与监控
    查看>>
    Python for 循环和迭代器行为
    查看>>
    Python For循环多次返回
    查看>>