数据结构和算法分析算法提高之LeetCode刷题

配对交换

2020-03-16  本文已影响0人  _阿南_

题目:

配对交换。编写程序,交换某个整数的奇数位和偶数位,尽量使用较少的指令(也就是说,位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)

提交

可以可以

看到超过了100%的人,还是很开心的啊

// END 单元测试的重要性啊,好多次都是错在0, 1 或None的错误中。

上一篇下一篇

猜你喜欢

热点阅读