LeetCode 476 數字的補數

給定一個正整數,輸出它的補數。補數是對該數的二進制表示取反。

注意:

給定的整數保證在32位帶符號整數的範圍內。
你可以假定二進制數不包含前導零位。
示例 1:

輸入: 5
輸出: 2
解釋: 5的二進制表示爲101(沒有前導零位),其補數爲010。所以你需要輸出2。
示例 2:

輸入: 1
輸出: 0
解釋: 1的二進制表示爲1(沒有前導零位),其補數爲0。所以你需要輸出0。

Py1

相對簡單的題目,瞭解bin和int(a,2)就好了。

class Solution:
    def findComplement(self, num: int) -> int:
        num = bin(num)
        return int(num[2:].replace('0','2').replace('1','0').replace('2','1'),2)

Py2

還可以用異或的方法:

class Solution:
    def findComplement(self, num: int) -> int:
        return num^(2<<(len(bin(num))-2)-1)-1
       

Js

關於JS的方法,評論區找到一個比較簡潔高級的寫法,用到了三元運算和map的方法。

/**
 * @param {number} num
 * @return {number}
 */
var findComplement = function(num) {
    return parseInt(num.toString(2).split("").map(a => a == '1' ? "0" : "1").join(""), 2);
};

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章