1. 程式人生 > >python 刷LeetCode 之 【數字的補數】

python 刷LeetCode 之 【數字的補數】

class Solution:
    def findComplement(num):
        """
        :type num: int
        :rtype: int
        """
        i = 1
        #從第一位開始一位一位按位異或獲得補數
        while num >= i:
            # ^表示按位進行亦或運算
            num ^= i
            # 各二進位全部左移若干位,高位丟棄,低位補0
            i <<= 1
        return
num # 輸入: 5 # 輸出: 2 # 解釋: 5的二進位制表示為101(沒有前導零位),其補數為010。所以你需要輸出2。 # 輸入: 1 # 輸出: 0 # 解釋: 1的二進位制表示為1(沒有前導零位),其補數為0。所以你需要輸出0。 if __name__ == '__main__': print(Solution.findComplement(5))