LC67.AddBinary
题目
给你两个二进制字符串,求和
题解
#include <string>
class Solution
{
public:
std::string addBinary(std::string a, std::string b)
{
std::string ans;
std::reverse(a.begin(), a.end());
std::reverse(b.begin(), b.end());
int n = std::max(a.size(), b.size()), carry = 0; //进位记录
for (size_t i = 0; i < n; ++i)
{
carry += i < a.size() ? (a.at(i) == '1') : 0;
carry += i < b.size() ? (b.at(i) == '1') : 0;
ans.push_back((carry % 2) ? '1' : '0');
carry /= 2;
}
if (carry) ans.push_back(1);
std::reverse(ans.begin(), ans.end());
return ans;
}
};