码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2018-09-16 16:01:45      阅读:134      评论:0      收藏:0      [点我收藏+]

标签:多次   sel   integer   bit   符号   进阶   class   --   def   

问题描述:

颠倒给定的 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--颠倒二进制位

标签:多次   sel   integer   bit   符号   进阶   class   --   def   

原文地址:https://www.cnblogs.com/NPC-assange/p/9654943.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!