您的位置:首页 > 职场人生

24_leetcode_Add Binary

2014-06-08 09:55 381 查看
Given two binary strings, return their sum (also a binary string).
     
     For example,
     a = "11"
     b = "1"
     Return "100".

1:当其中一个为NULL时,直接返回另一个字符串;2:二进制相加,有2进1;3:当有一个字符串较长的时候,注意较长的部位相加;4:考虑最后的进位
string addBinary(string a, string b)
{
if(a.empty())
return b;
if(b.empty())
return a;

string result;
int count = 0;

int sizeA = (int)a.length();
int sizeB = (int)b.length();

int i = sizeA - 1;
int j = sizeB - 1;
for(i = sizeA - 1, j = sizeB - 1; i >= 0 && j >= 0 ; i--, j--)
{
int temp = a[i] -'0' + b[j] - '0' + count;
if(temp >= 2)
{
result.push_back(temp - 2 + '0');
count = 1;
}
else
{
result.push_back(temp + '0');
count = 0;
}
}

string longString;
int curIndex;
if(i >= 0)
{
longString = a;
curIndex = i;
}
else
{
longString = b;
curIndex = j;
}

for(; curIndex >= 0; curIndex--)
{
int temp = longString[curIndex] - '0' + count;
if(temp >= 2)
{
result.push_back(temp - 2 + '0');
count = 1;
}
else
{
result.push_back(temp + '0');
count = 0;
}
}

if(count == 1)
{
result.push_back(count + '0');
}

int end = (int)result.size() - 1;
int start = 0;
while(start < end)
{
swap(result[start++], result[end--]);
}

return result;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息