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