LeetCode--190--颠倒二进制位

Posted Assange

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode--190--颠倒二进制位相关的知识,希望对你有一定的参考价值。

问题描述:

颠倒给定的 32 位无符号整数的二进制位。

示例:

输入: 43261596
输出: 964176192
解释: 43261596 的二进制表示形式为 00000010100101000001111010011100 ,
     返回 964176192,其二进制表示形式为 00111001011110000010100101000000 

进阶:
如果多次调用这个函数,你将如何优化你的算法?

方法1:常规操作,易错点在给头部补0.

1 class Solution:
2     # @param n, an integer
3     # @return an integer
4     def reverseBits(self, n):
5         input_b = bin(n)
6         input_b = input_b[2:]
7         input_b = "0"*(32-len(input_b))+input_b
8         input_b = input_b[::-1]
9         return int(input_b,2)

方法2:

1 class Solution:
2     # @param n, an integer
3     # @return an integer
4     def reverseBits(self, n):
5         res={0:032b}.format(n)#注意转换成32为无符号整形,res=bin(n)在这里会出错,ide不会
6         res=res[::-1]#翻转
7         res=int(res,2)
8         return res

方法3:

1 class Solution:
2     # @param n, an integer
3     # @return an integer
4     def reverseBits(self, n):
5         binary_n = bin(n)
6         reversed_n = ‘‘.join(reversed({:032d}.format(int(binary_n[2:]))))
7         return int(reversed_n, 2)

 2018-09-16 07:48:24


以上是关于LeetCode--190--颠倒二进制位的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode 190. 颠倒二进制位 (位运算)

LeetCode-190. 颠倒二进制位(java)

p83 颠倒二进制位(leetcode 190)

[Leetcode]190. 颠倒二进制位

LeetCode--190--颠倒二进制位

leetcode 190. 颠倒二进制位(c++)