python leetcode 颠倒二进制数

我的做法,,这个题在于必须补0
def reverseBits(n):

    num=32-len(bin(n)[2:])
    m = bin(n)[2:][::-1]
    if num > 0:
        for i in range(num):
            m=m+'0'
    print(m,int(m,2))

    return m

 看到前几做法

        nums=bin(n)
        nums=nums.lstrip('0b')
        nums=nums.zfill(32)   
        #zfill 一直没找到。。。。原来是这个
        nums=nums[::-1]
        return int(nums,2)            

zfill()用法:

描述

Python zfill() 方法返回指定长度的字符串,原字符串右对齐,前面填充0。

语法

zfill()方法语法:

str.zfill(width)


摘自:http://www.runoob.com/python/att-string-zfill.html

另一种,目前第一的做法
 
1         binNum = bin(n)
2         binStr = str(binNum)
3         binStr = binStr[2:]
4         #rjust..对应应该有ljust#
5         reverseStr = binStr.rjust(32, '0')
6         reverseStr = reverseStr[::-1]
7 
8         reverseNum = int(reverseStr, 2)
9         return reverseNum

描述

rjust() 返回一个原字符串右对齐,并使用空格填充至长度 width 的新字符串。如果指定的长度小于字符串的长度则返回原字符串。

语法

rjust()方法语法:

str.rjust(width[, fillchar])

参数

  • width -- 指定填充指定字符后中字符串的总长度.
  • fillchar -- 填充的字符,默认为空格。

摘自:http://www.runoob.com/python3/python3-string-rjust.html

转载于:https://www.cnblogs.com/wwshadow/p/9685656.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值