题解 | #牛群的编码反转#(java实现)

牛群的编码反转

https://www.nowcoder.com/practice/fbbef1b8d84b45a49f95ebf63a3b353b

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param n int整型
     * @return int整型
     */
    public int reverseBits (int n) {
       
        int res = 0;
        for (int i = 0; i < 32; i ++) {
            res = (res << 1) + (n & 1);
            n >>= 1;
        }

        return res;

    }
}
  • 题目考察的知识点:异或运算

使用java实现,思路如下

使用一个循环来处理每一位二进制位。将变量 res 初始化为0,用于存储反转后的编码。 在循环中,首先将res 向左移动一位,为下一个二进制位的处理留出位置。 然后,使用位运算 n & 1 来获取原编码的最低位并赋给res。 接下来,我们将原编码 n 右移一位,这样下一次循环时可以处理下一个二进制位。 重复这些步骤直到处理完所有32位二进制位,然后将 res 返回作为反转后的编码。 这种方法的时间复杂度为 O(1),因为循环的次数是固定的,只需要进行32次迭代,与编码的大小无关。因此,该实现具有低时间复杂度。

全部评论

相关推荐

1 收藏 评论
分享
牛客网
牛客企业服务