二进制求和
题目描述
给定两个二进制字符串,返回他们的和(用二进制表示)。
输入为非空字符串且只包含数字 1 和 0。
示例 1:
输入: a = “11”, b = “1”
输出: “100”
示例 2:
输入: a = “1010”, b = “1011”
输出: “10101”
思路分析
模拟二进制加法的过程,通过转换成字符串进行处理。代码如下:
public static String addBinary(String a, String b) {
StringBuilder builder = new StringBuilder();
if (b==null||b.length()==0)return a;
if (a.length()<b.length()){
String temp=a;
a=b;
b=temp;
}
int aLen=a.length()-1,bLen=b.length()-1,carry=0;
while (bLen>=0){
int bitSum=a.charAt(aLen)-'0'+b.charAt(bLen)-'0'+carry;
builder.append(bitSum%2);
carry=bitSum/2;
aLen--;
bLen--;
}
while(aLen>=0){
int bitSum=a.charAt(aLen)-'0'+carry;
builder.append(bitSum%2);
carry=bitSum/2;
aLen--;
}
if(carry==1)builder.append(carry);
return builder.reverse().toString();
}