LeetCode:Reverse Bits

来源:互联网 发布:sql判断师傅为空 编辑:程序博客网 时间:2024/06/04 18:26

问题描述:

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

思路:

1、将整数转变为二进制;

2、反转,相同的不用反转;

3、将翻转后的二进制变为整数返回。

代码:

class Solution {public:    uint32_t reverseBits(uint32_t n) {    int array[32] = {0};    int i = 0;    while(n)    {        array[i++] = n % 2;        n /= 2;    }    for(int i = 0,j = 31;i < 16;++i,--j)    {        if(array[i] != array[j])        {            int temp = array[i];            array[i] = array[j];            array[j] = temp;                    }    }    uint32_t key = 0;    for(int i = 31; i >= 0; --i)    {        key = key * 2 + array[i];    }    return key;    }};


0 0
原创粉丝点击