与えられた32ビットの符号なし2進整数を逆転させました。
実施例1:
入力:00000010100101000001111010011100
出力:00111001011110000010100101000000を
説明:00000010100101000001111010011100入力バイナリストリング符号なし整数43261596、
00111001011110000010100101000000バイナリ表現であるリターン964176192を、。
例2:
入力:11111111111111111111111111111101
出力:10111111111111111111111111111111を
説明:入力バイナリ文字列を11111111111111111111111111111101 4294967293符号なし整数、
それはバイナリ表現として3221225471 10101111110010110010011101101001を返すように。
思考
O(N)の時間計算量は、空間的複雑度はO(1)です。
コード
public class Solution {
// you need treat n as an unsigned value
public int reverseBits(int n) {
int ans = 0;
for(int i = 0; i < 32; i++) {
int temp = (n>>i & 1);
ans |= temp << (31 - i);
}
return ans;
}
}