一、题目描述
给你两个二进制字符串,返回它们的和(用二进制表示)。
输入为 非空 字符串且只包含数字 1 和 0。

二、解题思路
做本题之前先看看我的 39_字符串相加,这里
另外这几道题是同样的套路和模板,这道题就不写题解了:
38_数组形式的整数加法
37_两数相加
20_二进制求和
39_字符串相加
三、代码演示
class Solution {
public String addBinary(String a, String b) {
StringBuilder res = new StringBuilder();
int carry = 0;
int l1 = a.length() - 1;
int l2 = b.length() - 1;
while (l1 >= 0 || l2 >= 0) {
int x = l1 < 0 ? 0 : a.charAt(l1) - '0';
int y = l2 < 0 ? 0 : b.charAt(l2) - '0';
int sum = x + y + carry;
res.append(sum % 2);
carry = sum / 2;
l1--;
l2--;
}
if (carry != 0) res.append(carry);
return res.reverse().toString();
}
}
本文介绍了一种解决二进制字符串相加问题的方法。通过使用StringBuilder存储结果,并从最低位开始逐位相加,同时处理进位情况,最终逆序输出结果。此算法适用于两个非空且仅包含1和0的二进制字符串。
4368

被折叠的 条评论
为什么被折叠?



