题目:
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?
思考:
如果这个函数会被调用很多次,该怎么去优化?
方法一:性能82ms
class Solution:
# @param n, an integer
# @return an integer
def reverseBits(self, n):
b1 = bin(n)
s1 = str(b1[2:])
m = 0
if len(s1) < 32:
s2 = (32-len(s1))*'0'+s1
else:
s2 = s1
for i in range(len(s2)):
m += pow(2,i)*int(s2[i])
return m
方法二:性能49ms
class Solution:
# @param n, an integer
# @return an integer
def reverseBits(self, n):
s = bin(n)[2:].zfill(32)
s = s[::-1]
return int(s, 2)
方法三:性能35ms
class Solution:
# @param n, an integer
# @return an integer
def reverseBits(self, n):
b = '{0:032b}'.format(n)
b = b[::-1]
return int(b, 2)