题目描述
给定两个二进制字符串,返回他们的和(用二进制表示)。
输入为非空字符串且只包含数字 1
和 0
。
示例 1:
输入: a = "11", b = "1" 输出: "100"
示例 2:
输入: a = "1010", b = "1011" 输出: "10101"
解题思路
string addBinary(string a, string b) {
int lenA = a.length(),lenB = b.length();
string ans = "";
int i = lenA-1,j = lenB-1;
while(i>=0 && j>=0){
ans += (a[i] + b[j]) - '0';
i--;j--;
}
while(i>=0) ans += a[i--];
while(j>=0) ans += b[j--];
j = ans.length();
for(i=0;i<j;i++){
int t = ans[i] - '0';
if(t < 2) continue;
ans[i] = (t%2 + '0');
if(i+1<j) ans[i+1] = ans[i+1]+ t/2;
else ans+="1";
}
reverse(ans.begin(),ans.end());
return ans;
}