前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【一天一道Leetcode】颠倒二进制位

【一天一道Leetcode】颠倒二进制位

作者头像
潘永斌
发布2021-04-20 15:59:37
2890
发布2021-04-20 15:59:37
举报
文章被收录于专栏:看那个码农看那个码农

01

题目描述

题目描述:

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

示例 1:

代码语言:javascript
复制
输入: 00000010100101000001111010011100
输出: 00111001011110000010100101000000
解释: 
输入的二进制串 00000010100101000001111010011100 
表示无符号整数 43261596,
因此返回 964176192,
其二进制表示形式为 00111001011110000010100101000000。

提示:

输入是一个长度为32的二进制字符串。

02

思路和方法

由题意可知:

我们可以将输入num视为一个长为32的二进制串,从高往低枚举num的每一位,通过取余的形式判断该位数是否数值为1。

同时新建一个新的二进制串rev,如果num所在位数取余后结果为1,将1赋给rev。

这样进行一轮操作后,将rev的二进制左移1位,num二进制右移一位,继续判断下一个数。

直到最后完全输出rev的结果,

即为颠倒二进制后的结果。

我们的代码输出为:

代码语言:javascript
复制
class Solution:
    def reverseBits(self, n: int) -> int:
        rev=0
        i=0
        for i in range(32):
            rev<<=1
            if n%2==1:
                rev+=1
            n>>=1
            i+=1
        return rev
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-04-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 看那个码农 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 01
  • 02
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档