天天看點

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() == )
    {
        return b;
    }
    if (b == "0" || b.length() == )
    {
        return a;
    }
    string lstr;
    string sstr;
    if (a.length() >= b.length())
    {
        lstr = a;
        sstr = b;
    }
    else
    {
        lstr = b;
        sstr = a;
    }
    int temp = ;
    int slen = sstr.length();
    int llen = lstr.length();

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

}
           

leetcodeAC