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