题目描述: 二进制求和
给定两个二进制字符串,返回他们的和(用二进制表示)。
案例:
a = "11"
b = "1"
返回 "100"
。
解题思路:
先写个一位加法器,然后依次把b加入a中。
代码:
class Solution {
public:
string addBinary(string a, string b) {
if(a.length() < b.length()) swap(a, b);
for(int i = b.length()-1 ; i >= 0 ; i -- ) {
if(b[i] == '1') f(a, b.length()-i);
}
return a;
}
void f(string& a, int n) {
for(int i = a.length() -n ; i >= 0 ; i --) {
if(a[i] == '0') {
a.replace(i, 1, "1");
return;
}
else {
a.replace(i, 1, "0");
if(i == 0) a.insert(0, "1");
}
}
}
};