leetCode-Add Binary(c++)

Given two binary strings, return their sum (also a binary string).

For example,
a = “11”
b = “1”
Return “100”.
題意:給定兩個二進制的字符串,計算其和

思路:將兩個字符串按照長度分爲大字符串和小字符串,末尾對齊,在低位,即小字符串的範圍相加,進位保留,然後將保留的進位與大字符串高位,即大字符串獨有範圍相加,進位保留,若進位最後爲1,則將大字符串前加1。
代碼實現:

string addBinary(string a, string b) 
{
    if (a == "0" || a.length() == 0)
    {
        return b;
    }
    if (b == "0" || b.length() == 0)
    {
        return a;
    }
    string lstr;
    string sstr;
    if (a.length() >= b.length())
    {
        lstr = a;
        sstr = b;
    }
    else
    {
        lstr = b;
        sstr = a;
    }
    int temp = 0;
    int slen = sstr.length();
    int llen = lstr.length();

    for (int i = slen - 1; i >= 0; --i)
    {
        temp = temp + sstr[i] - '0' + lstr[i + llen - slen] - '0';
        lstr[i + llen - slen] = temp % 2 + '0';
        temp = temp / 2;
    }
    for (int j = llen - slen - 1; j >= 0;--j)
    {
        temp = temp + lstr[j] - '0';
        lstr[j] = temp % 2 + '0';
        temp = temp / 2;
    }
    if (temp>0)
    {
        lstr = "1" + lstr;
    }
    return lstr;

}

leetcodeAC

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章