Given two binary strings, return their sum (also a binary string).
For example,a = "11",b = "1".Return "100".
解题思路:其实是求二进制的加法,不过用字符串来进行表示。与数据结构中两个链表的合并的算法有些类似。
代码如下:
class Solution
{
public:
string addBinary(string a, string b)
{
int flag=0;
int indexa=a.size()-1;
int indexb=b.size()-1;
string c;
while(indexa >=0 && indexb >= 0)
{
int num=(a[indexa]-'0')+(b[indexb]-'0')+flag;
flag=num/2;
num=num%2;
c = (char)(num + '0') + c;
indexa--;
indexb--;
}
while(indexa>=0)
{
int num=(a[indexa]-'0')+flag;
flag=num/2;
num=num%2;
c=(char)(num + '0') + c;
indexa--;
}
while(indexb>=0)
{
int num=(b[indexb]-'0')+flag;
flag=num/2;
num=num%2;
c=(char)(num +'0')+c;
indexb--;
}
if(flag>0)
{
c=char(flag+'0')+c;
}
return c;
}
};