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;
}
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;
}
相关文章推荐
- LeetCode 67 Add Binary
- Add Binary - leetcode
- LeetCode 2015.7.21-2015.7.24 144,141,136,137,129,22,238,122,121,24
- LeetCode 2.Add Two Numbers,67.Add Binary,371.Sum of Two Integers,66.Plus One
- leetcode--Add Binary
- LeetCode(24)-Balanced Binary Tree
- Leetcode: Add Binary
- [leetcode] Add Binary
- Leetcode-24 Swap Nodes in Pairs
- 【LeetCode】C# 24、Swap Nodes in Pairs
- LeetCode – Refresh – Add Binary
- 【Leetcode】24. Swap Nodes in Pairs
- leetcode-add binary
- leetcode解题报告(24):Pascal's TriangleII
- [LeetCode] 24 Game 二十四点游戏
- 【Leetcode】Add Binary
- leetCode24:Swap Nodes in Pairs
- [LeetCode] 24. Swap Nodes in Pairs
- [leetcode] 67. Add Binary 解题报告
- 【LeetCode】24. Swap Nodes in Pairs C语言