1. 程式人生 > >LeetCode--371. Sum of Two Integers(兩個整數的和)Python

LeetCode--371. Sum of Two Integers(兩個整數的和)Python

題目:

給定兩個整數a和b,要求不使用‘+’和‘-’,返回這兩個整數的和。

解題思路:

由於不能使用加減符號,故考慮使用二進位制數的按位與和按位或等操作,已知按位異或可以得到不考慮進位的結果a^b,按位與可以得到進位的情況a&b。所以把進位的結果左移一位,再和異或的結果相加,即可得到最終的結果。而進位左移結果和異或結果相加時,也可能產生進位。故而迴圈上述步驟,直到進位的結果為0時終止。

程式碼(python):

class Solution(object):
    def getSum(self, a, b):
        """
        :type a: int
        :type b: int
        :rtype: int
        """
        while b != 0:
            carry = a & b
            a = (a ^ b)
            b = (carry << 1) 
        return a if a <= 0x7FFFFFFF else a|(~0x100000000+1)