思路:

1.判断两个字符串长度,若不等长就在字符串前补0

2.字符串对应位置相加,(注意相加是要减一个“0”)

3.判断相加后是否大于2,若大于向前一位进1

4.当运行到首位时,需判断是否大于2,若大于2,直接将“1”加入到字符串头位置

 

代码:

class Solution {
public:
    string addBinary(string a, string b) {
        int asize=a.size(), bsize=b.size();
        //判断a&b是否等长
        while(asize>bsize)
        {
            b='0'+b;//前面补0
            ++ bsize;
        }
        while(asize<bsize)
        {
            a='0'+a;
            ++ asize;
        }
        for(int i=asize-1;i>0;--i)
        {
            a[i]=a[i]-'0'+b[i];
            if(a[i]>='2')
            {
                a[i]=a[i]%2+'0';
                a[i-1]=a[i-1] +1;
            }
        }
        //当运行到首位时
        a[0]=a[0]-'0'+b[0];
        if(a[0]>='2')
        {
            a[0]=(a[0]-'0')%2+'0';
            a='1'+a;
        }
        return a;
    }
};