LeetCode-190. 颠倒二进制位

    xiaoxiao2022-07-04  205

    190. 颠倒二进制位

    【题目】:

    【代码】:

    【效果】:

    如果需要多次调用这个函数,可以将 int 拆成 4 个 byte,然后缓存 byte 对应的比特位翻转,最后再将4个byte翻转。

    private static Map<Byte, Integer> cache = new HashMap<>(); public int reverseBits(int n) { int ret = 0; for (int i = 0; i < 4; i++) { ret <<= 8; ret |= reverseByte((byte) (n & 0b11111111)); n >>= 8; } return ret; } private int reverseByte(byte b) { if (cache.containsKey(b)) return cache.get(b); int ret = 0; byte t = b; for (int i = 0; i < 8; i++) { ret <<= 1; ret |= t & 1; t >>= 1; } cache.put(b, ret); return ret; }

     

    最新回复(0)