题目:
配对交换。编写程序,交换某个整数的奇数位和偶数位,尽量使用较少的指令(也就是说,位0与位1交换,位2与位3交换,以此类推)。
示例1:
输入:num = 2(或者0b10)
输出 1 (或者 0b01)
示例2:
输入:num = 3
输出:3
提示:
num的范围在[0, 2^30 - 1]之间,不会发生整数溢出。
题目的理解:
将整型转化为二进制的字符串,然后获取奇数位和偶数位,再组装成字符串。
注意:二进制字符串前补0使字符串的长度是2的倍数。
python实现
class Solution:
def exchangeBits(self, num: int) -> int:
num_str = bin(num)
num_str = num_str.replace('0b', '')
if len(num_str) % 2 != 0:
num_str = '0' + num_str
odd = num_str[1::2]
even = num_str[0::2]
result = ''
for index in range(len(odd)):
result += odd[index]
result += even[index]
return int('0b' + result, 2)
提交
![](https://img.haomeiwen.com/i1534405/af22b17514fa93df.png)
看到超过了100%的人,还是很开心的啊
// END 单元测试的重要性啊,好多次都是错在0, 1 或None的错误中。
网友评论