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