专栏首页给永远比拿愉快Leetcode: Reverse Bits

Leetcode: Reverse Bits

题目: Reverse bits of a given 32 bits unsigned integer.

For example, given input 43261596 (represented in binary as 00000010100101000001111010011100), return 964176192 (represented in binary as 00111001011110000010100101000000).

Follow up: If this function is called many times, how would you optimize it?

Related problem: Reverse Integer

思路分析: 从右到左取出每一位的数字,然后从左到右放置!注意位运算的神奇之处!

C++参考代码:

class Solution
{
public:
    uint32_t reverseBits(uint32_t n)
    {
        uint32_t result = 0;
        for (int i = 0; i < 32; ++i)
        {
            result <<= 1;//结果每次先左移一位,这样每次后面的数字 就能向前走一位
            if (n & 1) result |= 1;//如果n的末尾是1,则在result的后面修改为1
            //其实这里换成result ^= 1也是没问题的,因为0|1=1,0^1=1
            n >>= 1;//n右移,用于从右到左每次取后面的数字
        }
        return result;
    }
};

因为C++整形数据所占的字节数会随着机器的不同而稍微有些区别,如果题目没有说明给定的无符号整形是4个字节,32位呢?我们可以通过数字1左移判断无符号整形的字节数。

C++参考代码:

class Solution
{
public:
    unsigned int reverseBits(unsigned int n)
    {
        unsigned int result = 0;
        //通过1左移判断无符号整形的字节数
        for (int i = 1; i != 0; i <<= 1)
        {
            result <<= 1;
            if (n & 1) result |= 1;
            n >>= 1;
        }
        return result;
    }
};

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Leetcode: Fraction to Recurring Decimal

    题目: Given two integers representing the numerator and denominator of a fractio...

    卡尔曼和玻尔兹曼谁曼
  • Leetcode: Reverse Integer

    Example1: x = 123, return 321 Example2: x = -123, return -321 题目提示: Have ...

    卡尔曼和玻尔兹曼谁曼
  • 简单工厂模式

    (Simple Factory)模式又称为静态工厂方法(Static Factory Method)模式,属于类的创建型模式,通常他根据自变量的不同返回不同类的...

    卡尔曼和玻尔兹曼谁曼
  • python列表与元组的用法

    7.列表生成式   #[i*i for i in range(10)]       [i*i for i in range(10) if i>5]

    py3study
  • Java中异常处理小细节

    Java中异常分为两种:一种是基于Error的,一种是基于Exception的。其两者都是继承自Throwable;其中Error错误一般都是不可恢复的错误,比...

    加多
  • <进击的虫师>如何让程序"懂很多"?

    ? 最近在做一个有意思的小项目, 在一个聊天对话中, 你向电脑提出问题, 他会自动分词,然后根据关键字, 自动答复你 对所有的关键字做出解释, 工作量实在...

    zhaoolee
  • 2015.11.30 HTML5真题练习

    HTML5学堂:每天一道题,强壮程序员!今日主要涉及昨日题目的解答,以及一道涉及函数的形参实参、arguments对象的题目 HTML5真题【2015.11.2...

    HTML5学堂
  • Laravel框架实现抢红包功能示例

    可以在信息界面自行选择 抢红包 或者 发红包 1.发红包,跳转到相应的发红包界面

    砸漏
  • 【PAT乙级】旧键盘打字

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

    喜欢ctrl的cxk
  • AttributeError: 'list' object has no attribute 'keys'

    hankleo

扫码关注云+社区

领取腾讯云代金券