import java.util.*;
public class Solution {
    public String binaryAdd (String A, String B) {
        String res="";
        char[] a=A.toCharArray();
        char[] b=B.toCharArray();
        int lengthA=a.length,lengthB=b.length;
        Stack<Integer> stack=new Stack<>(); //存放结果
        int carry=0; //表示进位
        //只有A、B中每一个数都遍历完,且进位为0,循环才结束
        while(lengthA!=0||lengthB!=0||carry!=0){ 
            int tmpA=(lengthA==0)?0:(a[--lengthA]-'0'); 
            int tmpB=(lengthB==0)?0:(b[--lengthB]-'0');
            int sum=tmpA+tmpB+carry;
            carry=sum/2;
            stack.push(sum%2);
        }
        while(!stack.isEmpty()){
            res+=stack.pop();
        }
        return res;
    }
}