Go语言学习之力扣-颠倒二进制位|Go主题月

513 阅读2分钟

作者:看那个码农

公众号:看那个码农

上期内容介绍了Go语言学习之力扣-逆波兰表达式|Go主题月

  • 逆波兰表达式

本篇内容将继续带领大家走进Go语言的世界。

1.本文简介

Go语言学习之力扣-颠倒二进制位

来源于:190. 颠倒二进制位

2.题目描述

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

示例1:

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

提示:

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

2.思路与方法

  • 将输入num视为一个长为32的二进制串,从高往低枚举num的每一位;
  • 通过取余的形式判断是否为1;
  • 同时新建一个新的二进制串rev,如果num所在位数取余后结果为1,将1赋给rev
  • 这样一轮进行后,rev左移,num右移,继续判断下一个数,
  • 最后完全输出rev的结果即为颠倒二进制后的结果。

3.具体实现代码

func reverseBits(num uint32) uint32 {
    var rev uint32=0
    for i:=0;i<32;i++{
        rev <<= 1
        if num%2==1{
            rev+=1
        }
        num >>= 1
    }
    return rev
}

力扣输出结果为:

image.png

如果你觉得这篇内容对你有帮助的话:

1、点赞支持下吧,让更多的人也能看到这篇内容

2、关注公众号:看那个码农,我们一起学习一起进步。