Add Binary - Serious and non-serious solution
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
andb
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:]