class Solution {
fun addBinary(a: String, b: String): String {
val longerString = if (a.length > b.length) a else b
val shorterString = if (a.length > b.length) b else a
var answer = ""
var carry = 0
var longCursor = longerString.length - 1
var shortCursor = shorterString.length - 1
var addum = 0
while (longCursor >= 0) {
val longValue = longerString[longCursor].digitToInt()
val shortValue = if (shortCursor >= 0) {
shorterString[shortCursor].digitToInt()
} else {
0
}
addum = addOneBinary(longValue, shortValue, carry)
when (addum) {
2 -> {
carry = 1
answer = "0$answer"
}
3 -> {
carry = 1
answer = "1$answer"
}
1 -> {
carry = 0
answer = "1$answer"
}
0 -> {
carry = 0
answer = "0$answer"
}
}
longCursor--
shortCursor--
}
when (addum) {
2 -> {
answer = "1$answer"
}
3 -> {
answer = "1$answer"
}
else -> {
}
}
return answer
}
private fun addOneBinary(a: Int, b: Int, carry: Int): Int {
println(a + b + carry)
return a + b + carry
}
}