描述
给定两个二进制字符串,返回他们的和(用二进制表示)。
您在真实的面试中是否遇到过这个题?
是
样例
a = 11
b = 1
返回 100
思路较简单,顺次相加即可。
class Solution {
public:
/*
* @param a: a number
* @param b: a number
* @return: the result
*/
string addBinary(string &a, string &b) {
// write your code here
int len1 = a.size() - 1;
int len2 = b.size() - 1;
string result = "";
int m = 0;
int n = 0;
while(len1 >= 0 && len2 >= 0){
m = (a[len1]-'0' + b[len2] - '0' + n) % 2;
n = (a[len1]-'0' + b[len2] - '0' + n) / 2;
result = to_string(m) + result;
len1--;
len2--;
}
while (len1 >= 0){
m = (a[len1]-'0' + n) % 2;
n = (a[len1]-'0' + n) / 2;
result = to_string(m) + result;
len1--;
}
while (len2 >= 0){
m = (b[len2] - '0' + n) % 2;
n = (b[len2] - '0' + n) / 2;
result = to_string(m) + result;
len2--;
}
if (n > 0) result = to_string(n) + result;
return result;
}
};