67. Add Binary
Given two binary strings, return their sum (also a binary string).
For example,
a = "11"
b = "1"
Return "100"
.
思路:
1.将两个字符串按数组相加得到新数组。
2.将新数组转换成结果。
代码如下:
class Solution {
public:
string addBinary(string a, string b) {
int sizeA = a.size();
int sizeB = b.size();
int carry = 0;
vector<int> result;
string resultStr;
if (sizeA < sizeB)
return addBinary(b, a);
for (int i = 0; i < sizeB; i++)
{
int cur = (a[sizeA - i - 1] - '0') + (b[sizeB - i - 1] - '0') + carry;
if (cur < 2)
{
result.push_back(cur);
carry = 0;
}
else if (cur == 2)
{
result.push_back(0);
carry = 1;
}
else if (cur == 3)
{
result.push_back(1);
carry = 1;
}
}
for (int j = sizeB; j < sizeA; j++)
{
int cur = (a[sizeA - j - 1] - '0') + carry;
if (cur < 2)
{
result.push_back((a[sizeA - j - 1] - '0') + carry);
carry = 0;
}
else if (cur == 2)
{
result.push_back(0);
carry = 1;
}
else if (cur == 3)
{
result.push_back(1);
carry = 1;
}
}
if (carry == 2)
{
result.push_back(0);
result.push_back(1);
}
else if ( carry == 1)
{
result.push_back(1);
}
for (int k = 0; k < result.size(); k++)
{
if (result[result.size() - 1 - k] == 1)
{
resultStr.append(1, '1');
}
else
{
resultStr.append(1, '0');
}
}
return resultStr;
}
};
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。