给定一个正整数,输出它的补数。补数是对该数的二进制表示取反。

示例 1:

输入: 5
输出: 2
解释: 5 的二进制表示为 101(没有前导零位),其补数为 010。所以你需要输出 2 。
示例 2:

输入: 1
输出: 0
解释: 1 的二进制表示为 1(没有前导零位),其补数为 0。所以你需要输出 0 。

来源:力扣(LeetCode)

# -*- coding: utf-8 -*-
#!/usr/bin/env python

"""
@author: WowlNAN

@github: https://github.com/WowlNAN

@blog: https://blog.csdn.net/qq_21264377

"""
class Solution:
    def findComplement(self, num: int) -> int:
        s = bin(num)
        a = s[:2]
        for i in range(2, len(s)):
            digit=1^(int(s[i]))
            a+=str(digit)
        return int(a, 2)

 这里使用python内置函数bin直接转为为 "0b****"的二进制字符。手写函数也很方便,除2取余数,再取商重复,拼接起来是就是二进制数。

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐