Q190 Reverse Bits

Reverse bits of a given 32 bits unsigned integer.

For example:
given input 43261596 (represented in binary as 00000010100101000001111010011100), 
return 964176192 (represented in binary as 00111001011110000010100101000000).
Follow up:

If this function is called many times, how would you optimize it?

Related problem: Reverse Integer

解题思路:

参考题目: Q7 Reverse Integer

此题是将整数对应的32位二进制数反转,然后再将反转后的二进制数转化为整数。

  • 以 n = 43261596 为例:
  1. 先用 bin(n) 将 n 转化为二进制数(str):'0b10100101000001111010011100';
  2. 再用 [:1:-1] 将str反转,注意去除 '0b' 两个字符: '00111001011110000010100101';
  3. 再用左对齐函数 ljust(32, '0'),在后面补 '0',达到 32位的要求:'00111001011110000010100101000000';
  4. 最后使用 int(str, base=2) 函数将指定进制的数转化为十进制数:964176192(也可以使用 eval('0b' + str)将二进制数转化为十进制数)。
Python实现:
class Solution:
    # @param n, an integer
    # @return an integer
    def reverseBits(self, n):
        return int(bin(n)[:1:-1].ljust(32, '0'), base=2)  
        # 或者 return eval('0b' + bin(n)[:1:-1].ljust(32, '0'))

a = 43261596
b = Solution()
print(b.reverseBits(a))  # 964176192

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏深度学习与计算机视觉

Python3 一些与C++不一样的运算符

Python逻辑运算符 逻辑“与”运算符 and 逻辑表达式 a and b 如果变量a,b中有一个是Flase,那么a and b为Flase ...

21650
来自专栏黑泽君的专栏

调用Thread类的方法:public final String getName() 为什么得到的线程对象的名称默认是:Thread-0、Thread-1、Thread-2、...呢?

调用Thread类的方法:public final String getName() 为什么得到的线程对象的名称默认是:Thread-0、Thread-1、Th...

15420
来自专栏转载gongluck的CSDN博客

python笔记:#005#算数运算符

算数运算符 计算机,顾名思义就是负责进行 数学计算 并且 存储计算结果 的电子设备 目标 算术运算符的基本使用 01. 算数运算符 算数运算符是 运算符的一种 ...

39170
来自专栏Micro_awake web

JavaScript(四):运算符&数据类型转换

+:算符的加法;连接字符串 加法会将其它类型的值,自动转为字符串,然后再进行连接运算! 1 var a=1+2; 2 console.log('first:...

20460
来自专栏韦弦的偶尔分享

Swift 冒泡排序及优化

时间复杂度 冒泡排序的最佳时间复杂度为O(n),即初始状态就是排好序的。 冒泡排序的最坏时间复杂复杂度为O(n2),即初始状态就是逆序的。 冒泡排序的平均...

19320
来自专栏互联网大杂烩

合并排序

合并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法 的一个非常典型的应用。 合并排序法是将两个(或两个以上)有序表合并成一个新的有序表,即把待...

17020
来自专栏风口上的猪的文章

.NET面试题系列[11] - IEnumerable<T>的派生类

ICollection<T>继承IEnumerable<T>。在其基础上,增加了Add,Remove等方法,可以修改集合的内容。IEnumerable<T>的直...

12520
来自专栏尾尾部落

[剑指offer] 数组中只出现一次的数字

一个整型数组里除了两个数字之外,其他的数字都出现了偶数次。请写程序找出这两个只出现一次的数字。

20620
来自专栏hbbliyong

Python正则进阶

  返回一个列表,如果正则表达式中没有分组,则列表中包含的是所有匹配的内容,如果正则表达式中有分组,则列表中的每个元素是一个元组,元组中包含子分组中匹配到的内容...

15230
来自专栏爱撒谎的男孩

冒泡排序算法

17230

扫码关注云+社区

领取腾讯云代金券