给你两个二进制字符串,返回它们的和(用二进制表示)。
输入为 非空 字符串且只包含数字 1 和 0。
输入: a = "11", b = "1" 输出: "100"
class Solution {
public String addBinary(String a, String b) {
int i = a.length() - 1;
int j = b.length() - 1;
int carry = 0;
StringBuffer sb = new StringBuffer();
while(i>=0&&j>=0){
int sum = carry;
sum += a.charAt(i--) - '0';
sum += b.charAt(j--) - '0';
carry = sum/2;
sb.append(sum%2);
}
while(i>=0){
int sum = carry;
sum += a.charAt(i--) - '0';
carry = sum/2;
sb.append(sum%2);
}
while(j>=0){
int sum = carry;
sum += b.charAt(j--) - '0';
carry = sum/2;
sb.append(sum%2);
}
if(carry != 0){
sb.append(carry);
}
return new String(sb.reverse());
}
}
也可以写成
class Solution {
public String addBinary(String a, String b) {
int carry = 0;
StringBuilder sb = new StringBuilder();
int i = a.length() -1;
int j = b.length() -1;
while(i>=0||j>=0){
int sum = carry;
sum += i>=0?a.charAt(i--)-'0':0;
sum += j>=0?b.charAt(j--)-'0':0;
carry = sum/2;
sb.append(sum%2);
}
if(carry != 0){
sb.append(carry);
}
return new String(sb.reverse());
}
}
另外还可以先将字符串类型转换为对应的十进制数,运算完再转换为二进制
class Solution {
public String addBinary(String a, String b) {
return Integer.toBinaryString(
Integer.parseInt(a, 2) + Integer.parseInt(b, 2)
);
}
}
本文介绍了一种解决二进制字符串相加问题的方法。通过逐位相加并处理进位,实现二进制字符串的加法运算。此外,还提供了一种将字符串转换为整数进行计算后再转回二进制的简便方式。
241

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



