题解 | #牛群的编码反转#(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次迭代,与编码的大小无关。因此,该实现具有低时间复杂度。