1. 程式人生 > >LeetCode:190. 顛倒二進位制位

LeetCode:190. 顛倒二進位制位

1、題目描述

顛倒給定的 32 位無符號整數的二進位制位。

示例:

輸入: 43261596
輸出: 964176192
解釋: 43261596 的二進位制表示形式為 00000010100101000001111010011100 ,
     返回 964176192,其二進位制表示形式為 00111001011110000010100101000000 。

進階:
如果多次呼叫這個函式,你將如何優化你的演算法?

2、題解

2.1、解法一

class Solution:
    # @param n, an integer
    # @return an integer
    def reverseBits(self, n):
        ret = bin(n)[2:]
        ret = reversed(ret)
        l = list(ret)
        l.extend(['0' for i in range(32-len(l))])
        s = "".join(l)
        return int(s,2)

2.2、解法二

class Solution:
    # @param n, an integer
    # @return an integer
    def reverseBits(self, n):
        ret = bin(n)[2:]
        ret = "".join(['0' for i in range(32-len(ret))]) +ret
        new = reversed(ret)
        print(new)
        return int("".join(list(new)),2)