1. 程式人生 > >LeetCode 67.Add Binary (二進位制求和)

LeetCode 67.Add Binary (二進位制求和)

題目描述:

給定兩個二進位制字串,返回他們的和(用二進位制表示)。

輸入為非空字串且只包含數字 1 和 0

示例 1:

輸入: a = "11", b = "1"
輸出: "100"

示例 2:

輸入: a = "1010", b = "1011"
輸出: "10101"

AC C++ Solution:

class Solution
{
public:
    string addBinary(string a, string b)
    {
        string s = "";
        
        int c = 0, i = a.size() - 1, j = b.size() - 1; // c用來記錄對應位相加的數字以及進位
        while(i >= 0 || j >= 0 || c == 1)
        {
            c += i >= 0 ? a[i --] - '0' : 0;        //加上a[i]或0
            c += j >= 0 ? b[j --] - '0' : 0;        //加上b[j]或0
            s = char(c % 2 + '0') + s;              //s一定在後加
            c /= 2;    //c若為2,則在下一次迴圈中c初始值為1.
        }
        
        return s;
    }
};