class Solution {
public:
char add(char a, char b, char c, char &carry){
int result = a - '0' + b -'0' + c-'0';
if(result == 0){
carry = '0';
return '0';
}else if(result == 1){
carry = '0';
return '1';
}else if(result == 2){
carry = '1';
return '0';
}else{
carry = '1';
return '1';
}
}
string addBinary(string a, string b) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
if(a.empty() || b.empty()) return "";
if(b.size() > a.size()) swap(a,b);
int p = a.size()-1;
int q = b.size()-1;
string c = a;
char carry = '0';
char nc;
while(q >= 0){
c[p] = add(a[p], b[q], carry, nc);
carry = nc;
p--;
q--;
}
while(p >= 0){
c[p] = add(a[p], '0', carry, nc);
carry = nc;
p--;
}
if(carry == '1'){
c.insert(c.begin(), '1');
}
return c;
}
};
[leetcode]Add Binary
最新推荐文章于 2018-11-29 11:33:40 发布