LeetCode OJ-- Add Binary

https://oj.leetcode.com/problems/add-binary/

对两个二进制字符串求和。

对于字符串 ans_str,求它的翻转。

reverse(ans_str.begin(), ans_str.end())

也可以:

s.assign(ans_str.rbegin(),ans_str.rend())

class Solution {
public:
    string addBinary(string a, string b) {
        if(a.empty())
            return b;
        if(b.empty())
            return a;
        
        // b is greater
        if(a.size() > b.size())
        {
            string t = a; a = b; b = t;
        }
        
        string ans;
        size_t i_a = a.size();
        size_t i_b = b.size();
        int carry = 0;
        int sum = 0;
        while(i_a-- && i_b--)
        {
            sum = a[i_a] - '0' + b[i_b] - '0' + carry;
            carry = sum >= 2 ? 1 : 0;
            ans.push_back(sum % 2 + '0');
        }
        
        while(i_b--)
        {
            sum = b[i_b] - '0' + carry;
            carry = sum >= 2 ? 1 : 0;
            ans.push_back(sum % 2 + '0');
        }
        
        if(carry)
            ans.push_back('1');
        
        reverse(ans.begin(),ans.end());
        
        return ans;
    }
};
原文地址:https://www.cnblogs.com/qingcheng/p/3830983.html