一. 题目
-
题目
颠倒给定的 32 位无符号整数的二进制位。 -
示例
二. 方法一: 拼接 + 反转
-
解题思路
-
解题代码
def reverseBits(self, n: int) -> int: bin_num = bin(n) size = 34 - len(bin_num) result = "0b" + bin_num[-1: 1: -1] + "0" * size return int(result, 2)
-
分析
时间复杂度: O(1)
空间复杂度: O(1)
三. 方法二
-
解题思路
- 先将输入的数字转成32位长的二进制数
- 然后再从右向左进行计算
- 算出最终结果即可
-
解题代码
def reverseBits(self, n: int) -> int: bin_num = bin(n) size = 34 - len(bin_num) bin_num = "0b" + "0" * size + bin_num[2:] result = 0 for ele in bin_num[-1:1:-1]: result = (result << 1) + int(ele) return result
-
分析
时间复杂度: O(1)
空间复杂度: O(1)