题目描述:
Given two binary strings, return their sum (also a binary string).
Example
题目思路:
a = 11
b = 1
Return 100
我这里把binary加法和普通的加法准则一样处理,只不过换成了二进制,其实没什么区别。
Mycode(AC = 23ms):
class Solution {
public:
/**
* @param a a number
* @param b a number
* @return the result
*/
string addBinary(string& a, string& b) {
// Write your code here
string ans = "";
int carry = 0, idx_a = a.length() - 1, idx_b = b.length() - 1;
while (idx_a >= 0 && idx_b >= 0) {
int digit_a = int(a[idx_a--]) - int('0');
int digit_b = int(b[idx_b--]) - int('0');
ans = to_string((digit_a + digit_b + carry) % 2) + ans;
carry = (digit_a + digit_b + carry) / 2;
}
while (idx_a >= 0) {
int digit_a = int(a[idx_a--]) - int('0');
ans = to_string((digit_a + carry) % 2) + ans;
carry = (digit_a + carry) / 2;
}
while (idx_b >= 0) {
int digit_b = int(b[idx_b--]) - int('0');
ans = to_string((digit_b + carry) % 2) + ans;
carry = (digit_b + carry) / 2;
}
if (carry > 0) {
ans = to_string(carry) + ans;
}
return ans;
}
};