[LeetCode: Python]190. Reverse Bits

来源:互联网 发布:手机 Ubuntu 编辑:程序博客网 时间:2024/06/17 13:24

题目:
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)
0 0
原创粉丝点击