问题描述

Given two binary strings, return their sum (also a binary string).

For example,
a = "11"
b = "1"
Return "100".

二进制加法

代码

class Solution {
public:
    string addBinary(string a, string b) {
        int cur=0;
        int max = a.length()>b.length()?a.length():b.length();
        string r(max, '0');
        for(int i=0, p=a.length()-1, q=b.length()-1;i<max;i++,q--,p--) {
        	if(p<0&&q>=0) {
        		int tmp = ((b[q]-'0')+cur)%2;
				r[max-1-i] = tmp + '0';
				cur = b[q]=='1'&&cur==1?1:0;
	        } else if(p>=0&&q<0) {
	        	int tmp = ((a[p]-'0')+cur)%2;
        		r[max-1-i] = tmp + '0';
				cur = a[p]=='1'&&cur==1?1:0;
        	} else {
				int tmp = (a[p]+b[q]-2*'0'+cur)%2;
				r[max-1-i] = tmp + '0';
				cur = (a[p]+b[q]-2*'0'+cur>=2)?1:0;
	        }
        }
        if(cur==1){
        	string t(1,cur+'0');
        	r = t+r;
        }
        return r;
    }
};