class Solution {
    fun addBinary(a: String, b: String): String {
        var rsum = ""; var carry = 0; var aL = a.length-1; var bL = b.length-1
        while(aL >= 0 || bL >= 0){
            var aBit = if(aL >= 0) a[aL--] else '0'
            var bBit = if(bL >= 0) b[bL--] else '0'
            val sum = aBit.toString().toInt() + bBit.toString().toInt() + carry
            carry = sum / 2
            rsum = (sum % 2).toString() + rsum
        }
        if(carry > 0)
            rsum = '1' + rsum
        return rsum
    }
}