class Solution {
  public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param A string字符串
     * @param B string字符串
     * @return string字符串
     */
    string binaryAdd(string A, string B) {
        // write code here
        int lengthA = A.length();
        int lengthB = B.length();
	  //反转字符串进行计算
        reverse(A.begin(), A.end());
        reverse(B.begin(), B.end());

        string Sum;
        int pri = 0;
        int i;
        for (i = 0; i < lengthA && i < lengthB; i++) {
            Sum += ((A[i] + B[i] + pri -'0' -'0') % 2 + '0');
            pri = (A[i] + B[i] + pri -'0' -'0') / 2;
        }
        while (i < lengthA) {
            Sum += ((A[i] + pri -'0') % 2 + '0');
            pri = (A[i] + pri -'0') / 2;
            i++;
        }
        while (i < lengthB) {
            Sum += ((B[i] + pri -'0') % 2 +'0');
            pri = (B[i] + pri -'0') / 2;
            i++;
        }
        if(pri > 0)
            Sum += (pri +'0');
        reverse(Sum.begin(), Sum.end());
        return Sum;
    }
};