力扣:190. 颠倒二进制位(Python3)

题目:

颠倒给定的 32 位无符号整数的二进制位。

提示:

  • 请注意,在某些语言(如 Java)中,没有无符号整数类型。在这种情况下,输入和输出都将被指定为有符号整数类型,并且不应影响您的实现,因为无论整数是有符号的还是无符号的,其内部的二进制表示形式都是相同的。
  • 在 Java 中,编译器使用二进制补码记法来表示有符号整数。因此,在 示例 2 中,输入表示有符号整数 -3,输出表示有符号整数 -1073741825

来源:力扣(LeetCode)
链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台

示例:

示例 1:

输入:n = 00000010100101000001111010011100
输出:964176192 (00111001011110000010100101000000)
解释:输入的二进制串 00000010100101000001111010011100 表示无符号整数 43261596因此返回 964176192,其二进制表示形式为 00111001011110000010100101000000


示例 2:

输入:n = 11111111111111111111111111111101
输出:3221225471 (10111111111111111111111111111111)

解释:输入的二进制串 11111111111111111111111111111101 表示无符号整数 4294967293,因此返回 3221225471 其二进制表示形式为 10111111111111111111111111111111 。

解法:

使用format函数将int转为32位二进制字符串,然后字符串反转,转为int。

知识点:

1.'{[index][ : [fill] align][sign][#][width][.precision][type]} {……}{……} '.format()返回格式后的化字符串。index:指定序号,序号可以是在‘format()’中的索引值,如果没有,则以format()中的默认顺序自动分配;fill:指定空白处的填充符;align:指定数字的对齐方式,如下

< right-aligned 左对齐(对于大部分对象时为默认)
> right-aligned 右对齐 (对于数字时为默认)
= 数据右对齐,同时将符号放置在填充内容的最左侧,该选项只对数字类型有效
^ 数据居中,此选项需和 width 参数一起使用

sign:指定有无符号数,如下

+ 正数前面添加 ‘ + ’ ,负数前面加 ‘ - ’
- 正数前面不添加 ‘ + ’ ,负数前面加 ‘ - ’
space 正数前面添加 ‘ 空格 ’ ,负数前面加 ‘ - ’
# 对于二进制数、八进制数和十六进制数,使用此参数,各进制数前会分别显示 0b、0o、0x前缀;反之则不显示前缀

width:指定输出数据时所占的宽度;. precision:如果后面存在type参数,则指的是保留小数的位数,如果type参数不存在,则是指有效数字的位数;type:指定输出数据的具体类型,如下

s 对字符串类型格式化
d 十进制整数
c 将十进制整数自动转换成对应的 Unicode 字符
e or E 转换成科学计数法后,再格式化输出
g or G 自动在 e 和 f(或 E 和 F)中切换
b 将十进制数自动转换成二进制表示,再格式化输出
o 将十进制数自动转换成八进制表示,再格式化输出
x or X 将十进制数自动转换成十六进制表示,再格式化输出
f or F 转换为浮点数(默认小数点后保留 6 位),再格式化输出
% 显示百分比(默认显示小数点后 6 位)

代码:

class Solution:
    def reverseBits(self, n: int) -> int:
        return int('{:032b}'.format(n)[::-1], 2)

你可能感兴趣的:(LeetCode,leetcode,算法,python)