import java.util.*;


public class Solution {
    /**
     * 
     * @param a string字符串 
     * @param b string字符串 
     * @return string字符串
     */
    public String addBinary (String str1, String str2) {
        // write code here
        // 判断是否需要进位
        boolean isJin = false;
        List<Integer> list = new ArrayList<>();
        for(int i = str1.length() - 1 , j = str2.length() - 1;;i--, j--){
            if(i < 0 && j < 0){
                break;
            }
            int jinWei = isJin? 1:0;
            isJin = false;
            int plus1 = i>=0 ? Integer.valueOf(str1.charAt(i)-'0') : 0;
            int plus2 = j>=0 ? Integer.valueOf(str2.charAt(j)-'0') : 0;
            int result = plus1 + plus2 + jinWei;
            // 大于等于2说明要进位
            if(result >= 2){
                isJin = true;
                result = result - 2;
            }
            list.add(result);
        }
        StringBuilder resultStr = new StringBuilder();
        // 最高位如果需要进位,则给个1
        if(isJin) {
            resultStr.append(1);
        }
        for(int i = list.size() -1 ; i>=0 ; i--){
            resultStr.append(list.get(i));
        }
        return resultStr.toString();
    }
}