配对交换
思路:
当我们看到与二进制位有关时就要联想到位操作符。
一个数字可以写成二进制的形式,也可以写成偶数位二进制与奇数位二进制相加的形式,例如
代码实现:
class Solution {
public:
int exchangeBits(int num) {
int odd = num & 0x55555555;
int even = num & 0xaaaaaaaa;
return (odd << 1) + (even >> 1);
}
};
对位操作符感兴趣可以看看博主的这篇文章:位操作练习题目。