[LeetCode] 190. Reverse Bits
Posted aaronliu1991
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[LeetCode] 190. Reverse Bits相关的知识,希望对你有一定的参考价值。
颠倒二进制位。题意是给一个数字,请你将其二进制的表达反转过来。例子,
Input: 00000010100101000001111010011100 Output: 00111001011110000010100101000000 Explanation: The input binary string 00000010100101000001111010011100 represents the unsigned integer 43261596, so return 964176192 which its binary representation is 00111001011110000010100101000000.
思路是把input从右向左一位位的取出来,如果取出来的是1,将结果 res 左移一位并且加上1;如果取出来的是0,将结果 res 左移一位,然后将n右移一位即可。
时间O(1) - 因为无论如何也就只有32次操作
空间O(1)
1 /** 2 * @param {number} n - a positive integer 3 * @return {number} - a positive integer 4 */ 5 var reverseBits = function(n) { 6 if (n === 0) return 0; 7 var res = 0; 8 for (var i = 0; i < 32; i++) { 9 res = res << 1; 10 if ((n & 1) === 1) res++; 11 n = n >> 1; 12 } 13 return res >>> 0; 14 };
以上是关于[LeetCode] 190. Reverse Bits的主要内容,如果未能解决你的问题,请参考以下文章