Leetcode 190. Reverse Bits

    xiaoxiao2021-03-25  7

    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?

    s思路: 1. 一种方法是右移得到数位,然后左移构造新数。麻烦的地方在于是unsigned integer,貌似不影响。 2. 另一种方法是两头取bit位,swap。这样就和unsigned integer无关! 3. 如果调用多次,如何优化?

    //方法1:移位。 class Solution { public: uint32_t reverseBits(uint32_t n) { // uint32_t res=0; for(int i=0;i<32;i++){ res<<=1; if(n){ res=res|n&1; n>>=1; } } return res; } }; //方法2:swap首尾 class Solution { public: uint32_t reverseBits(uint32_t n) { // int i=0,j=31; while(i<j){ int l=n&(1<<i); int r=n&(1<<j); if(l&&!r||!l&&r){ n=n^(1<<j); n=n^(1<<i); } i++;j--; } return n; } };
    转载请注明原文地址: https://ju.6miu.com/read-149618.html

    最新回复(0)