一、题目要求

二、题目背景

此题依旧属于位运算范畴

知识点1:有符号和无符号二进制是怎样表现的?

对于有符号数,最高位为1说明是个负数

知识点2:进制之间的相互转换

(1)十进制转十六进制

hex(n)

(2)十六进制转十进制

int(str,16),其中str是16进制字符串

(3)十进制转二进制

bin(n) ,其中n就是十进制整数

(4)二进制转十进制

int(str,2)  其中str是二进制的字符串表现形式

三、解题思路

3.1 思路1

  (1)代码

首先想到的就是将这个二进制字符串倒叙显示就可以了即S[::-1]

class Solution:
# @param n, an integer
# @return an integer
def reverseBits(self, n):
return int(bin(n)[2:][::-1],2)

(2)测试结果

测试运行结果错误,结果见下图,在进行n转二进制时高位0被自动忽略,导致后续转换失败

bin(43261596)
'0b10100101000001111010011100'

(3)优化

设置一个格式,将整数转成二进制时高位补0   b='{:032b}'.format(n),    '{:32b}'.format(n)得到的结果就是高位不补0,运行结果如下

3.2 思路2

还可以通过移位的操作,执行用时比上面的更快

class Solution:
# @param n, an integer
# @return an integer
def reverseBits(self, n):
res=0
for i in range(32):
res=res<<1
res+=n&1
n= n>>1
return res

  

四、进阶

如果要多次调用这个函数,又该如何优化算法?

LeetCode刷题2——颠倒二进制位的更多相关文章

  1. C#LeetCode刷题-位运算

    位运算篇 # 题名 刷题 通过率 难度 78 子集   67.2% 中等 136 只出现一次的数字 C#LeetCode刷题之#136-只出现一次的数字(Single Number) 53.5% 简单 ...

  2. LeetCode刷题专栏第一篇--思维导图&时间安排

    昨天是元宵节,过完元宵节相当于这个年正式过完了.不知道大家有没有投入继续投入紧张的学习工作中.年前我想开一个Leetcode刷题专栏,于是发了一个投票想了解大家的需求征集意见.投票于2019年2月1日 ...

  3. leetcode 刷题进展

    最近没发什么博客了 凑个数 我的leetcode刷题进展 https://gitee.com/def/leetcode_practice 个人以为 刷题在透不在多  前200的吃透了 足以应付非算法岗 ...

  4. LeetCode刷题指南(字符串)

    作者:CYC2018 文章链接:https://github.com/CyC2018/CS-Notes/blob/master/docs/notes/Leetcode+%E9%A2%98%E8%A7% ...

  5. leetcode刷题记录--js

    leetcode刷题记录 两数之和 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但 ...

  6. LeetCode刷题总结之双指针法

    Leetcode刷题总结 目前已经刷了50道题,从零开始刷题学到了很多精妙的解法和深刻的思想,因此想按方法对写过的题做一个总结 双指针法 双指针法有时也叫快慢指针,在数组里是用两个整型值代表下标,在链 ...

  7. Leetcode刷题记录(python3)

    Leetcode刷题记录(python3) 顺序刷题 1~5 ---1.两数之和 ---2.两数相加 ---3. 无重复字符的最长子串 ---4.寻找两个有序数组的中位数 ---5.最长回文子串 6- ...

  8. LeetCode刷题总结-数组篇(上)

    数组是算法中最常用的一种数据结构,也是面试中最常考的考点.在LeetCode题库中,标记为数组类型的习题到目前为止,已累计到了202题.然而,这202道习题并不是每道题只标记为数组一个考点,大部分习题 ...

  9. LeetCode刷题总结-数组篇(中)

    本文接着上一篇文章<LeetCode刷题总结-数组篇(上)>,继续讲第二个常考问题:矩阵问题. 矩阵也可以称为二维数组.在LeetCode相关习题中,作者总结发现主要考点有:矩阵元素的遍历 ...

随机推荐

  1. ansible模块-user

    一.概述user 模块可以帮助我们管理远程主机上的用户,比如创建用户.修改用户.删除用户.为用户创建密钥对等操作.二.心得password参数:此参数用于指定用户的密码.但是这个密码不能是明文的密码, ...

  2. Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'

    方法:重启MySQL 在命令行执行: /etc/init.d/mysql start

  3. 将网页上指定的表单的数据导入到excel中

    很多时候,我们想要将网页上显示的信息,导入到Excel中,但是很多时候无法下手.可是,这个时候,下面这个例子会帮你大忙了. 将html表单指定内容导出到EXCEL中. <!DOCTYPE HTM ...

  4. 解决ubuntu的screen已经处于Attached状态,无法再打开窗口

    Attached表示该窗口已经被上一登录用户使用,需要重新登录 1. 先查询窗口id screen -ls 3606.node (11/26/2019 07:31:49 PM) (Attached) ...

  5. 享元模式(Flyweight)---结构型

    1 基础知识 定义:提供了减少对象数量从而改善应用所需的对象结构的方式.特征:运用共享技术有效支持大量细粒度的对象. 本质:分离与共享. 使用场景: (1)如果一个应用程序使用了大量的细粒度对象,可以 ...

  6. @EnableScheduling

  7. 【原创】洛谷 LUOGU P3372 【模板】线段树1

    P3372 [模板]线段树 1 题目描述 如题,已知一个数列,你需要进行下面两种操作: 1.将某区间每一个数加上x 2.求出某区间每一个数的和 输入输出格式 输入格式: 第一行包含两个整数N.M,分别 ...

  8. 【线性代数】4-1:四个正交子空间(Orthogonality of the Four Subspace)

    title: [线性代数]4-1:四个正交子空间(Orthogonality of the Four Subspace) categories: Mathematic Linear Algebra k ...

  9. T2695 桶哥的问题——送桶 题解

    校内测试 ------T2 看完这个题,就觉得和贪心那一块的任务调度很像,于是思路就是贪心啦! 蒟蒻的我,也就只能想到用贪心了,但是不知道怎么用qwq 这是我考试当时的思路,数据水骗了80分qwq: ...

  10. Django基础之命名空间模式(include)

    即使不同的APP使用相同的URL名称,URL的命名空间模式也可以让你唯一反转命名的URL. 例如: project中的urls.py from django.conf.urls import url, ...