zoukankan      html  css  js  c++  java
  • 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 as00111001011110000010100101000000).

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

    Related problem: Reverse Integer

    分析:题意为反转给定32位无符号整型数的位

    思路:我们只需将原整型数从右到左一个一个取出来,然后一个个加到新数的最低位中即可

    class Solution {
    public:
        uint32_t reverseBits(uint32_t n) {
            uint32_t s=0;
            for(int i=0;i<32;i++){
            if(n&1==1){
                n>>=1;
                s=(s<<=1)+1;
            }
            else{
                n>>=1;
                s=(s<<=1);
            }
          }
          return s;
        }
    };
    

    或可参考更简洁做法:

    class Solution {
    public:
    uint32_t reverseBits(uint32_t n) {
    uint32_t res = 0;
    for (int i = 0; i < 32; ++i) {
    res |= (((n >> i) & 1) << (31 - i));
    }
    return res;
    }
    };

     位运算 

    其他可参考方法:

    #include<iostream>
    using namespace std;
    
    class Solution {
    public:
        uint32_t reverseBits(uint32_t n) {
            uint32_t m=0;
            for(int i=0;i<32;i++){
                m<<=1;
                m = m|(n & 1);
                n>>=1;
            }
            return m;
        }
    };
    
    int main()
    {
        uint32_t n = 1;
        Solution sol;
        cout<<sol.reverseBits(n)<<endl;
        return 0;
    }
    

     或:

    class Solution {
      public:
        uint32_t reverseBits(uint32_t n) {
        uint32_t m = 0;
        for (int i = 0; i< 32 ; i++,n/=2)
            m = (m<<1) + (n%2);
        return m;
    }
     };
    

      

     

      

  • 相关阅读:
    [洛谷P2523] HAOI2011 Problem c
    [CF156D] Clues
    [洛谷P4769] NOI2018 冒泡排序
    [CF605E] Intergalaxy Trips
    [洛谷P4492] HAOI2018 苹果树
    [洛谷P3349] ZJOI2016 小星星
    [洛谷P4336] SHOI2016 黑暗前的幻想乡
    [洛谷P5364] SNOI2017 礼物
    [洛谷P2606] ZJOI2010 排列计数
    [洛谷P6078] CEOI2004 candy
  • 原文地址:https://www.cnblogs.com/carsonzhu/p/4658345.html
Copyright © 2011-2022 走看看