190. Reverse Bits
来源:互联网 发布:网络销售总监岗位职责 编辑:程序博客网 时间:2024/06/03 08:00
Reverse bits of a given 32 bits unsigned integer.
For example, given input 43261596 (represented in binary as 00000010100101000001111010011100), return 964176192 (represented in binary as00111001011110000010100101000000).
Follow up:
If this function is called many times, how would you optimize it?
Related problem: Reverse Integer
官方解答:
The Java solution is straightforward, just bitwise operation:
public int reverseBits(int n) { int result = 0; for (int i = 0; i < 32; i++) { result += n & 1; n >>>= 1; // CATCH: must do unsigned shift if (i < 31) // CATCH: for last digit, don't shift! result <<= 1; } return result;}
How to optimize if this function is called multiple times? We can divide an int into 4 bytes, and reverse each byte then combine into an int. For each byte, we can use cache to improve performance.
// cacheprivate final Map<Byte, Integer> cache = new HashMap<Byte, Integer>();public int reverseBits(int n) { byte[] bytes = new byte[4]; for (int i = 0; i < 4; i++) // convert int into 4 bytes bytes[i] = (byte)((n >>> 8*i) & 0xFF); int result = 0; for (int i = 0; i < 4; i++) { result += reverseByte(bytes[i]); // reverse per byte if (i < 3) result <<= 8; } return result;}private int reverseByte(byte b) { Integer value = cache.get(b); // first look up from cache if (value != null) return value; value = 0; // reverse by bit for (int i = 0; i < 8; i++) { value += ((b >>> i) & 1); if (i < 7) value <<= 1; } cache.put(b, value); return value;}
阅读全文
0 0
- 【LeetCode】190.Reverse bits
- LeetCode 190. Reverse Bits
- 190. Reverse Bits
- Leetcode 190. Reverse Bits
- 190. Reverse Bits LeetCode
- 190. Reverse Bits
- 190. Reverse Bits
- 190. Reverse Bits
- LeetCode *** 190. Reverse Bits
- 190. Reverse Bits
- 190. Reverse Bits
- LeetCode 190. Reverse Bits
- 190. Reverse Bits
- 190. Reverse Bits
- Leetcode-190. Reverse Bits
- Leetcode 190. Reverse Bits
- LeetCode-190.Reverse Bits
- [leetcode] 190. Reverse Bits
- [Leetcode][python]Partition List
- Linux CentOS7下安装Zookeeper-3.4.10服务(最新)
- python @,@staticmethod,@classmethod
- Java泛型详解
- C++中的explicit关键字
- 190. Reverse Bits
- 从零基础认识maven工程构建
- java不同安装包的安装方法(rpm,bin,tar)
- 一元多项式的加法器 C语言版 链表版 顺序表版
- 解决Atom 的 GitHub 和 Git 面板无法打开
- 算法设计与分析——使用dijkstra算法计算最短路径并且给出路径上的节点序列
- GC
- Java基本类型和引用类型
- Linux定时任务调用sh文件