首页 > 学院 > 开发设计 > 正文

Leetcode 190. Reverse Bits

2019-11-10 20:00:01
字体:
来源:转载
供稿:网友

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; }};
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表