Friday, September 13, 2013

Given two binary strings, return their sum (also a binary string).
For example,
a = "11"
b = "1"
Return "100".


string addBinary(string a, string b) {
    if(a.size() <= 0)
        return b;
    
    if(b.size() <= 0)
        return a;
    
    string result = "";
    int i = a.size() - 1;
    int j = b.size() - 1;
    
    int carry = 0;
    int sum = 0;
    while(i >=0 && j >= 0)
    {
        sum = a[i] - '0' + b[j] - '0'+ carry;
        carry = sum / 2;
        sum = sum % 2;
        char t = sum + '0';
        result = t+ result ;
        i--;
        j--;
    }
    
    while(i >=0)
    {
        sum = a[i] - '0' +  carry;
        carry = sum / 2;
        sum = sum % 2;
        char t = sum + '0';
        result = t + result ;
        i--;
    }
    
    
    while(j >= 0)
    {
        sum =  b[j] - '0'+ carry;
        carry = sum / 2;
        sum = sum % 2;
        char t = sum + '0';
        result = t + result ;
        j--;
    }
    
    if(carry)
    {
        char t = carry + '0';
    result = t + result ;
    }
    return result;
}

No comments:

Post a Comment