leetcode 190. Reverse Bits

来源:互联网 发布:淘宝直播如何开通 编辑:程序博客网 时间:2024/06/06 03:36

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

这道题很简答,就是做一个移位操作,其实也可以把整数转化二进制的字符串,然后反转字符串。

像这样的题很可能面试遇到。

代码如下:

public class Solution{    /*     * 由于Java中没有无符号数的概念,所以要注意一下,下面是Java的移位运算符     * << 左移运算符,num << 1,相当于num乘以2     * >> 右移运算符,num >> 1,相当于num除以2     * >>> 无符号右移,忽略符号位,空位都以0补齐     *      * */    // you need treat n as an unsigned value    public int reverseBits(int n)     {        int res=0;        for(int i=0;i<32;i++)        {            if( (n&1)==1 )            {                res = (res<<1) +1;                n = n>>>1;            }else            {                res = res<<1;                n = n>>>1;            }        }        return res;    }}

下面是C++的做法,就是直接作位运算

代码如下:

#include <iostream>#include <vector>#include <string>#include <map>#include <cmath>#include <algorithm>using namespace std;class Solution {public:    uint32_t  reverseBits(uint32_t n)    {        uint32_t result = 0;        for (int i = 0; i < 32; i++)        {            result = (result << 1) + (n >> i & 1);        }        return result;    }};
原创粉丝点击