题目:
Given two binary strings, return their sum (also a binary string).
For example,
a = “11”
b = “1”
Return “100”.
题意:
给两个二进制数组的字符串,返回两者的和。
思路:
跟66题有些类似,也需要保存进位,需要考虑最高一位的进位情况。
以上。
代码如下:
class Solution {
public:
string addBinary(string a, string b) {
int m = a.size();
int n = b.size();
if(m == 0 && n == 0)return "";
else if(m == 0)return b;
else if(n == 0)return a;
int length = (m>n)?m:n;
string s(length,' ');
int carry = 0;
int i = m-1,j = n-1;
while(i >= 0 || j>=0 ){
int temp = (i>= 0? (a[i--] - '0'):0) + (j >= 0 ? (b[j--] - '0'):0) + carry;
carry = temp/2;
temp %= 2;
s[--length] = temp + '0';
}
if(carry == 1){
return "1" + s;
}
return s;
}
};