function addBinary(a: string, b: string): string {
    let res = '';
    let carry = 0;

    a = a.split('').reverse().join('');
    b = b.split('').reverse().join('');

    for (let i = 0; i < Math.max(a.length, b.length); i++) {
        let digitA: number = i < a.length ? +a[i] : 0;
        let digitB: number = i < b.length ? +b[i] : 0;

        let total = digitA + digitB + carry;
        let char = `${total % 2}`;
        res = char + res;
        carry = Math.floor(total / 2);
    }
    if (carry) {
        res = '1' + res;
    }
    return res;
}