标签:sam class call follow input tps out mpi val
Reverse bits of a given 32 bits unsigned integer.
Example 1:
Input: 00000010100101000001111010011100 Output: 00111001011110000010100101000000 Explanation: The input binary string 00000010100101000001111010011100 represents the unsigned integer 43261596, so return 964176192 which its binary representation is 00111001011110000010100101000000.
Example 2:
Input: 11111111111111111111111111111101 Output: 10111111111111111111111111111111 Explanation: The input binary string 11111111111111111111111111111101 represents the unsigned integer 4294967293, so return 3221225471 which its binary representation is 10101111110010110010011101101001.
Note:
-3
and the output represents the signed integer -1073741825
.
Follow up:
If this function is called many times, how would you optimize it?
e.g.
n = b7 1 b5 b4 b3 b2 0 b0
0 0 0 0 0 0 1 0 1 << i (i = 1)
0 1 0 0 0 0 0 0 1 << j (j = 6)
xor 0 1 0 0 0 0 1 0 bit_mask = ( (1 << i) | (1 << j) )
b7 0 b5 b4 b3 b2 1 b0 n ^ bit_mask
b7 ~b6 b5 b4 b3 b2 ~b1 b0
time = O(1), space = O(1)
public class Solution { // you need treat n as an unsigned value public int reverseBits(int n) { int i = 0, j = 31; while(i < j) { n = reverseBitPair(n, i++, j--); } return n; } private int reverseBitPair(int n, int i, int j) { int leftBit = (n >> i) & 1; int rightBit = (n >> j) & 1; if(leftBit != rightBit) { n ^= ((1 << i) | (1 << j)); } return n; } }
标签:sam class call follow input tps out mpi val
原文地址:https://www.cnblogs.com/fatttcat/p/11404502.html