使用kotlin完成这个题目:67. 二进制求和 给你两个二进制字符串 a 和 b ,以二进制字符串的形式返回它们的和。 示例 1: 输入:a = "11", b = "1" 输出:"100" 示例 2: 输入:a = "1010", b = "1011" 输出:"10101" 提示: 1 <= a.length, b.length <= 104 a 和 b 仅由字符 '0' 或 '1' 组成 字符串如果不是 "0" ,就不含前导零 通过次数324,156提交次数611,721 请问您在哪类招聘中遇到此题?
时间: 2024-01-13 11:02:24 浏览: 141
Kotlin二进制读写方法
以下是使用 Kotlin 编写的解法:
```kotlin
fun addBinary(a: String, b: String): String {
val result = StringBuilder()
var carry = 0
var i = a.length - 1
var j = b.length - 1
while (i >= 0 || j >= 0 || carry > 0) {
val sum = (if (i >= 0) a[i--] - '0' else 0) +
(if (j >= 0) b[j--] - '0' else 0) +
carry
result.append(sum % 2)
carry = sum / 2
}
return result.reverse().toString()
}
```
该函数接收两个二进制字符串 `a` 和 `b`,并返回它们的和。
具体实现是通过循环遍历两个字符串,从末位开始逐位相加,并记录进位。需要注意的是,如果其中一个字符串已经遍历完了,需要在计算时将其对应的位视作 0。最后将结果翻转后返回即可。
在本题中,我们可以使用 `StringBuilder` 来动态添加结果,避免多次字符串拼接带来的性能问题。
阅读全文