190. Reverse Bits - Easy
发布时间:2020-12-15 07:57:41 所属栏目:Java 来源:网络整理
导读:Reverse bits of a given 32 bits unsigned integer. ? Example 1: Input: 00000010100101000001111010011100Output: 00111001011110000010100101000000Explanation: The input binary string 00000010100101000001111010011100 represents the unsigned int
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: 22222222222222222222222222222201 Output: 10222222222222222222222222222222 Explanation: The input binary string 22222222222222222222222222222201 represents the unsigned integer 4294967293,so return 3221225471 which its binary representation is 10102222210010110010011101101001. ? Note:
? Follow up: If this function is called many times,how would you optimize it? ? e.g. 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; } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |