Bit Manipulation     Easy     Math     Simulation     String    

Problem Statement:

Given two binary strings a and b, return their sum as a binary string.

 

Example 1:

Input: a = "11", b = "1"
Output: "100"

Example 2:

Input: a = "1010", b = "1011"
Output: "10101"

 

Constraints:

  • 1 <= a.length, b.length <= 104
  • a and b consist only of '0' or '1' characters.
  • Each string does not contain leading zeros except for the zero itself.

Solution:

Serious solution:

class Solution {
public:
    string addBinary(string a, string b) {
        string res;
        int i = a.size()-1, j = b.size()-1;
        int carry = 0;
        while (i>=0 && j>=0)
        {
            int sum = carry + (a[i]-'0') + (b[j]-'0');
            res.push_back('0'+sum%2);
            carry = (sum>1)?1:0;
            i--; j--;
        }
        while (i>=0)
        {
            int sum = carry + (a[i]-'0');
            res.push_back('0'+sum%2);
            carry = (sum>1)?1:0;
            i--;
        }
        while (j>=0)
        {
            int sum = carry + (b[j]-'0');
            res.push_back('0'+sum%2);
            carry = (sum>1)?1:0;
            j--;
        }
        if (carry==1) res.push_back('0'+carry);
        reverse(res.begin(), res.end());
        return res;
    }
};

If you want to troll LC:

class Solution:
    def addBinary(self, a: str, b: str) -> str:
        return bin(int(a,2)+int(b,2))[2:]