class Solution:
    def bitwiseComplement(self, n: int) -> int:
        # 如果是0直接返回1
        if n == 0:
            return 1
        
        # 转二进制字符
        s = bin(n)[2:]
        
        # 反转后的字符
        arr = []

        for x in s:
            if x == '0':
                arr.append('1')
                continue
            arr.append('0')
        
        return int(str(int(''.join(arr))), 2)

先把 n 转成二进制字符串,去掉开头的 0b。然后遍历每一位,如果是 0 就变成 1,是 1 就变成 0,得到一个新的二进制字符串。最后把这个新字符串转回十进制整数返回。

时间复杂度 O(k),k 是 n 的二进制位数,也就是 log₂(n) 级别。

总评:思路很直接,按题目描述一步步来。但实现上有点绕,用了字符串操作和 int 转换,效率还行但不够简洁。其实可以用位运算直接做:找到和 n 相同位数的全 1 掩码,异或一下就得到按位取反的结果,不需要转字符串。