Leetcode 190. Reverse Bits
2017-02-08 12:50
323 查看
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. 如果调用多次,如何优化?
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; } };
相关文章推荐
- [leetcode] 190. Reverse Bits
- Leetcode题解 190. Reverse Bits
- leetcode - 190. Reverse Bits
- 【LeetCode】190.Reverse bits
- leetcode 190. Reverse Bits
- Java [Leetcode 190]Reverse Bits
- LEETCODE-Reverse Bits
- leetcode Reverse Bits
- [leetcode190]Reverse Bits
- leetcode 190 Reverse Bits
- LeetCode Reverse Bits
- Leetcode 190 Reverse Bits
- [LeetCode]Reverse Bits
- [LeetCode] Reverse Bits
- 【LeetCode】190 Reverse Bits
- 190. Reverse Bits
- [leetcode-190]Reverse Bits(C)
- LeetCode#190 Reverse Bits
- LeetCode 190: Reverse Bits
- LeetCode题解:Reverse Bits