2019-08-21 二进制求和

给定两个二进制字符串,返回他们的和(用二进制表示)。

输入为非空字符串且只包含数字 1 和 0。

示例 1:

输入:

a = "11"
b = "1"

输出:

"100"

示例 2:

输入:

a = "1010"
b = "1011"

输出:

"10101"
C++
class Solution {
public:
    string addBinary(string a, string b) {
        int lena = a.length();
        int lenb = b.length();
        // cout << lena << ", " << lenb << endl;
        string res;
        int k=0,i=lena-1,j=lenb-1;
        string temp(1,'0');
        while(j>=0 && i>=0){
            // cout << "ss" << a[i]-'0'+b[j]-'0'+k <j?i:j;
        for(int i=index;i>=0;i--){
            if(lena>=lenb){
                if(a[i]-'0'+k == 2){
                    res.insert(0, temp);
                    k=1;
                }else{
                    string s(1, a[i]-'0'+k+'0');
                    res.insert(0, s);
                    k=0;
                }
                
            }else{
                if(b[i]-'0'+k == 2){
                    res.insert(0, temp);
                    k=1;
                }else{
                    string s(1, b[i]-'0'+k+'0');
                    res.insert(0, s);
                    k=0;
                }
            }
        }
        if(k == 1){
            string s(1,'1');
            res.insert(0, s);
        }
        return res;
    }
};

你可能感兴趣的:(2019-08-21 二进制求和)