题目英文描述:
Given two binary strings, return their sum (also a binary string).
The input strings are both non-empty and contains only characters 1 or 0.
提示:
Each string consists only of '0' or '1' characters.
1 <= a.length, b.length <= 10^4
Each string is either "0" or doesn't contain any leading zero.
题目中文描述:
给你两个二进制字符串,返回它们的和(用二进制表示)。
输入为 非空 字符串且只包含数字 1 和 0。
提示:
每个字符串仅由字符 '0' 或 '1' 组成。
1 <= a.length, b.length <= 10^4
字符串如果不是 "0" ,就都不含前导零。
代码:
class Solution {
public:
string addBinary(string a, string b) {
string result;
int carry = 0;
for(int i = a.size() - 1, j = b.size() - 1; i > -1 || j > -1; --i, --j) {
carry += i > -1 ? (a[i] == '1') : 0; //如果i,j小于0,则补0,即取0
carry += j > -1 ? (b[j] == '1') : 0;
result.push_back(carry % 2 == 1 ? '1' : '0'); // 不反转用‘+’连接数组效率变低
carry /= 2; // carry大于等于2即要进位
}
if(carry)
result.push_back('1');
reverse(result.begin(),result.end());
return result;
}
};