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

