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; } };